Update upstream source from tag 'upstream/3.24.21'
Update to upstream version '3.24.21'
with Debian dir 642e8dd8e4
This commit is contained in:
commit
5ef6fe97cc
6
INSTALL
6
INSTALL
@ -4,7 +4,7 @@ Prerequisites
|
||||
GTK+ requires the following packages:
|
||||
|
||||
- The GLib, Pango, GdkPixbuf, ATK and cairo libraries, available at
|
||||
the same location as GTK+. GTK+ 3.24.20 requires at least
|
||||
the same location as GTK+. GTK+ 3.24.21 requires at least
|
||||
GLib 2.57.2, Pango 1.41.0,
|
||||
GdkPixbuf 2.30.0, ATK 2.15.1
|
||||
and cairo 1.14.0.
|
||||
@ -22,8 +22,8 @@ GTK+ requires the following packages:
|
||||
Simple install procedure
|
||||
========================
|
||||
|
||||
% tar xf gtk+-3.24.20.tar.xz # unpack the sources
|
||||
% cd gtk+-3.24.20 # change to the toplevel directory
|
||||
% tar xf gtk+-3.24.21.tar.xz # unpack the sources
|
||||
% cd gtk+-3.24.21 # change to the toplevel directory
|
||||
% ./configure # run the `configure' script
|
||||
% make # build GTK+
|
||||
[ Become root if necessary ]
|
||||
|
@ -16,6 +16,7 @@ EXTRA_DIST += \
|
||||
NEWS.pre-1-0 \
|
||||
README.commits \
|
||||
README.win32 \
|
||||
check-version.py \
|
||||
config.h.win32 \
|
||||
makefile.msc \
|
||||
gtk-zip.sh.in \
|
||||
|
@ -537,8 +537,8 @@ GTESTER_REPORT = gtester-report # in $PATH for non-GLIB packages
|
||||
|
||||
# initialize variables for unconditional += appending
|
||||
EXTRA_DIST = autogen.sh HACKING README README.in INSTALL INSTALL.in \
|
||||
NEWS.pre-1-0 README.commits README.win32 config.h.win32 \
|
||||
makefile.msc gtk-zip.sh.in sanitize-la.sh \
|
||||
NEWS.pre-1-0 README.commits README.win32 check-version.py \
|
||||
config.h.win32 makefile.msc gtk-zip.sh.in sanitize-la.sh \
|
||||
po/README.translators po/po2tbl.sed.in make-pot \
|
||||
meson_options.txt meson.build po/meson.build \
|
||||
po-properties/meson.build build-aux/meson/post-install.py \
|
||||
|
51
NEWS
51
NEWS
@ -1,3 +1,54 @@
|
||||
Overview of Changes in GTK+ 3.24.21
|
||||
===================================
|
||||
|
||||
* Wayland:
|
||||
- Prevent crashes with offscreen windows
|
||||
- Handle disorderly tablet/pad disconnects
|
||||
|
||||
* GtkFileChooser:
|
||||
- Translate the type column
|
||||
- Add a tracker3 search engine
|
||||
- Rate-limit trash monitoring
|
||||
- Make get_filter work for native chooser
|
||||
|
||||
* GtkGLArea:
|
||||
- Fix a redraw problem
|
||||
|
||||
* GtkScrolledWindow:
|
||||
- Fix kinetic scrolling
|
||||
|
||||
* Add a gtk-cursor-aspect-ratio setting
|
||||
|
||||
* GDK:
|
||||
- Improve frame clock smoothness
|
||||
- Fix frame clock monotonicity
|
||||
|
||||
* OS X:
|
||||
- Support Pen / Eraser input
|
||||
- Support openfiles in GtkApplication
|
||||
|
||||
* Adwaita:
|
||||
- Improve notebook tab legibility
|
||||
|
||||
* Translation updates:
|
||||
Basque
|
||||
Brazilian Portuguese
|
||||
Catalan
|
||||
Chinese (Taiwan)
|
||||
German
|
||||
Indonesian
|
||||
Italian
|
||||
Japanese
|
||||
Kazakh
|
||||
Lithuanian
|
||||
Polish
|
||||
Romanian
|
||||
Slovak
|
||||
Slovenian
|
||||
Swedish
|
||||
Ukrainian
|
||||
|
||||
|
||||
Overview of Changes in GTK+ 3.24.20
|
||||
===================================
|
||||
|
||||
|
2
README
2
README
@ -1,7 +1,7 @@
|
||||
General Information
|
||||
===================
|
||||
|
||||
This is GTK+ version 3.24.20. GTK+ is a multi-platform toolkit for
|
||||
This is GTK+ version 3.24.21. GTK+ is a multi-platform toolkit for
|
||||
creating graphical user interfaces. Offering a complete set of widgets,
|
||||
GTK+ is suitable for projects ranging from small one-off projects to
|
||||
complete application suites.
|
||||
|
24
aclocal.m4
vendored
24
aclocal.m4
vendored
@ -112,7 +112,7 @@ AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run
|
||||
CFLAGS="$CFLAGS $GLIB_CFLAGS"
|
||||
LIBS="$GLIB_LIBS $LIBS"
|
||||
dnl
|
||||
dnl Now check if the installed GLIB is sufficiently new. (Also sanity
|
||||
dnl Now check if the installed GLib is sufficiently new. (Also sanity
|
||||
dnl checks the results of pkg-config to some extent)
|
||||
dnl
|
||||
rm -f conf.glibtest
|
||||
@ -142,7 +142,7 @@ main (void)
|
||||
glib_major_version, glib_minor_version, glib_micro_version);
|
||||
printf ("*** was found! If pkg-config was correct, then it is best\n");
|
||||
printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
|
||||
printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
|
||||
printf("*** by modifying your LD_LIBRARY_PATH environment variable, or by editing\n");
|
||||
printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
|
||||
printf("*** required on your system.\n");
|
||||
printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
|
||||
@ -152,7 +152,7 @@ main (void)
|
||||
(glib_minor_version != GLIB_MINOR_VERSION) ||
|
||||
(glib_micro_version != GLIB_MICRO_VERSION))
|
||||
{
|
||||
printf("*** GLIB header files (version %d.%d.%d) do not match\n",
|
||||
printf("*** GLib header files (version %d.%d.%d) do not match\n",
|
||||
GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
|
||||
printf("*** library (version %d.%d.%d)\n",
|
||||
glib_major_version, glib_minor_version, glib_micro_version);
|
||||
@ -167,18 +167,18 @@ main (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
|
||||
printf("\n*** An old version of GLib (%u.%u.%u) was found.\n",
|
||||
glib_major_version, glib_minor_version, glib_micro_version);
|
||||
printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
|
||||
printf("*** You need a version of GLib newer than %u.%u.%u. The latest version of\n",
|
||||
major, minor, micro);
|
||||
printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
|
||||
printf("*** GLib is always available from ftp://ftp.gtk.org.\n");
|
||||
printf("***\n");
|
||||
printf("*** If you have already installed a sufficiently new version, this error\n");
|
||||
printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
|
||||
printf("*** being found. The easiest way to fix this is to remove the old version\n");
|
||||
printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
|
||||
printf("*** of GLib, but you can also set the PKG_CONFIG environment to point to the\n");
|
||||
printf("*** correct copy of pkg-config. (In this case, you will have to\n");
|
||||
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
|
||||
printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n");
|
||||
printf("*** so that the correct libraries are found at run-time))\n");
|
||||
}
|
||||
}
|
||||
@ -201,7 +201,7 @@ main (void)
|
||||
if test -f conf.glibtest ; then
|
||||
:
|
||||
else
|
||||
echo "*** Could not run GLIB test program, checking why..."
|
||||
echo "*** Could not run GLib test program, checking why..."
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
ac_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $GLIB_CFLAGS"
|
||||
@ -211,8 +211,8 @@ main (void)
|
||||
#include <stdio.h>
|
||||
], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
|
||||
[ echo "*** The test program compiled, but did not run. This usually means"
|
||||
echo "*** that the run-time linker is not finding GLIB or finding the wrong"
|
||||
echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
|
||||
echo "*** that the run-time linker is not finding GLib or finding the wrong"
|
||||
echo "*** version of GLib. If it is not finding GLib, you'll need to set your"
|
||||
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
|
||||
echo "*** to the installed location Also, make sure you have run ldconfig if that"
|
||||
echo "*** is required on your system"
|
||||
@ -220,7 +220,7 @@ main (void)
|
||||
echo "*** If you have an old version installed, it is best to remove it, although"
|
||||
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
|
||||
[ echo "*** The test program failed to compile or link. See the file config.log for the"
|
||||
echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
|
||||
echo "*** exact error that occurred. This usually means GLib is incorrectly installed."])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
LIBS="$ac_save_LIBS"
|
||||
fi
|
||||
|
@ -39,7 +39,7 @@ GDBUS_CODEGEN = $(PREFIX)\bin\gdbus-codegen
|
||||
!endif
|
||||
|
||||
# Please do not change anything beneath this line unless maintaining the NMake Makefiles
|
||||
GTK_VERSION = 3.24.20
|
||||
GTK_VERSION = 3.24.21
|
||||
|
||||
GDK_PREPROCESSOR_FLAGS = \
|
||||
/DG_LOG_USE_STRUCTURED=1 \
|
||||
|
@ -68,7 +68,7 @@ vs$(VSVER)\$(CFG)\$(PLAT)\bin\Gtk-3.0.gir: Gtk_3_0_gir_list
|
||||
--include=Atk-1.0 \
|
||||
--pkg-export=gtk+-3.0 \
|
||||
--cflags-begin \
|
||||
-DG_LOG_USE_STRUCTURED=1 -DGTK_VERSION="3.24.20" -DGTK_BINARY_VERSION="3.0.0" -DGTK_COMPILATION -DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED -DGTK_LIBDIR=\"/dummy/lib\" -DGTK_DATADIR=\"/dummy/share\" -DGTK_DATA_PREFIX=\"/dummy\" -DGTK_SYSCONFDIR=\"/dummy/etc\" -DGTK_HOST=\"$(AT_PLAT)-pc-vs$(VSVER)\" -DGTK_PRINT_BACKENDS=\"file\" -DINCLUDE_IM_am_et -DINCLUDE_IM_cedilla -DINCLUDE_IM_cyrillic_translit -DINCLUDE_IM_ime -DINCLUDE_IM_inuktitu -DINCLUDE_IM_ipa -DINCLUDE_IM_multipress -DINCLUDE_IM_thai -DINCLUDE_IM_ti_er -DINCLUDE_IM_ti_et -DINCLUDE_IM_viqr -DGTK_TEXT_USE_INTERNAL_UNSUPPORTED_API -I../.. -I../../gtk -I../../gdk \
|
||||
-DG_LOG_USE_STRUCTURED=1 -DGTK_VERSION="3.24.21" -DGTK_BINARY_VERSION="3.0.0" -DGTK_COMPILATION -DGTK_PRINT_BACKEND_ENABLE_UNSUPPORTED -DGTK_LIBDIR=\"/dummy/lib\" -DGTK_DATADIR=\"/dummy/share\" -DGTK_DATA_PREFIX=\"/dummy\" -DGTK_SYSCONFDIR=\"/dummy/etc\" -DGTK_HOST=\"$(AT_PLAT)-pc-vs$(VSVER)\" -DGTK_PRINT_BACKENDS=\"file\" -DINCLUDE_IM_am_et -DINCLUDE_IM_cedilla -DINCLUDE_IM_cyrillic_translit -DINCLUDE_IM_ime -DINCLUDE_IM_inuktitu -DINCLUDE_IM_ipa -DINCLUDE_IM_multipress -DINCLUDE_IM_thai -DINCLUDE_IM_ti_er -DINCLUDE_IM_ti_et -DINCLUDE_IM_viqr -DGTK_TEXT_USE_INTERNAL_UNSUPPORTED_API -I../.. -I../../gtk -I../../gdk \
|
||||
--cflags-end \
|
||||
--warn-all --include-uninstalled=./vs$(VSVER)/$(CFG)/$(PLAT)/bin/Gdk-3.0.gir \
|
||||
--filelist=Gtk_3_0_gir_list \
|
||||
|
@ -5,7 +5,7 @@
|
||||
<GlibEtcInstallRoot>$(SolutionDir)\..\..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
|
||||
<CopyDir>..\..\..\..\vs$(VSVer)\$(Platform)</CopyDir>
|
||||
<ApiVersion>3.0</ApiVersion>
|
||||
<GtkVersion>3.24.20</GtkVersion>
|
||||
<GtkVersion>3.24.21</GtkVersion>
|
||||
<GtkLibtoolCompatibleDllPrefix>lib</GtkLibtoolCompatibleDllPrefix>
|
||||
<GtkLibtoolCompatibleDllSuffix>.0-0</GtkLibtoolCompatibleDllSuffix>
|
||||
<GtkSeparateVSDllPrefix />
|
||||
|
@ -5,7 +5,7 @@
|
||||
<GlibEtcInstallRoot>$(SolutionDir)\..\..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
|
||||
<CopyDir>..\..\..\..\vs$(VSVer)\$(Platform)</CopyDir>
|
||||
<ApiVersion>3.0</ApiVersion>
|
||||
<GtkVersion>3.24.20</GtkVersion>
|
||||
<GtkVersion>3.24.21</GtkVersion>
|
||||
<GtkLibtoolCompatibleDllPrefix>lib</GtkLibtoolCompatibleDllPrefix>
|
||||
<GtkLibtoolCompatibleDllSuffix>.0-0</GtkLibtoolCompatibleDllSuffix>
|
||||
<GtkSeparateVSDllPrefix />
|
||||
|
@ -5,7 +5,7 @@
|
||||
<GlibEtcInstallRoot>$(SolutionDir)\..\..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
|
||||
<CopyDir>..\..\..\..\vs$(VSVer)\$(Platform)</CopyDir>
|
||||
<ApiVersion>3.0</ApiVersion>
|
||||
<GtkVersion>3.24.20</GtkVersion>
|
||||
<GtkVersion>3.24.21</GtkVersion>
|
||||
<GtkLibtoolCompatibleDllPrefix>lib</GtkLibtoolCompatibleDllPrefix>
|
||||
<GtkLibtoolCompatibleDllSuffix>.0-0</GtkLibtoolCompatibleDllSuffix>
|
||||
<GtkSeparateVSDllPrefix />
|
||||
|
@ -5,7 +5,7 @@
|
||||
<GlibEtcInstallRoot>$(SolutionDir)\..\..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
|
||||
<CopyDir>..\..\..\..\vs$(VSVer)\$(Platform)</CopyDir>
|
||||
<ApiVersion>3.0</ApiVersion>
|
||||
<GtkVersion>3.24.20</GtkVersion>
|
||||
<GtkVersion>3.24.21</GtkVersion>
|
||||
<GtkLibtoolCompatibleDllPrefix>lib</GtkLibtoolCompatibleDllPrefix>
|
||||
<GtkLibtoolCompatibleDllSuffix>.0-0</GtkLibtoolCompatibleDllSuffix>
|
||||
<GtkSeparateVSDllPrefix />
|
||||
|
@ -5,7 +5,7 @@
|
||||
<GlibEtcInstallRoot>$(SolutionDir)\..\..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
|
||||
<CopyDir>..\..\..\..\vs$(VSVer)\$(Platform)</CopyDir>
|
||||
<ApiVersion>3.0</ApiVersion>
|
||||
<GtkVersion>3.24.20</GtkVersion>
|
||||
<GtkVersion>3.24.21</GtkVersion>
|
||||
<GtkLibtoolCompatibleDllPrefix>lib</GtkLibtoolCompatibleDllPrefix>
|
||||
<GtkLibtoolCompatibleDllSuffix>.0-0</GtkLibtoolCompatibleDllSuffix>
|
||||
<GtkSeparateVSDllPrefix />
|
||||
|
@ -5,7 +5,7 @@
|
||||
<GlibEtcInstallRoot>$(SolutionDir)\..\..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
|
||||
<CopyDir>..\..\..\..\vs$(VSVer)\$(Platform)</CopyDir>
|
||||
<ApiVersion>3.0</ApiVersion>
|
||||
<GtkVersion>3.24.20</GtkVersion>
|
||||
<GtkVersion>3.24.21</GtkVersion>
|
||||
<GtkLibtoolCompatibleDllPrefix>lib</GtkLibtoolCompatibleDllPrefix>
|
||||
<GtkLibtoolCompatibleDllSuffix>.0-0</GtkLibtoolCompatibleDllSuffix>
|
||||
<GtkSeparateVSDllPrefix />
|
||||
|
@ -22,7 +22,7 @@
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkVersion"
|
||||
Value="3.24.20"
|
||||
Value="3.24.21"
|
||||
/>
|
||||
<UserMacro
|
||||
Name="GtkLibtoolCompatibleDllPrefix"
|
||||
|
200
check-version.py
Executable file
200
check-version.py
Executable file
@ -0,0 +1,200 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import re
|
||||
import sys
|
||||
|
||||
try:
|
||||
configure_ac = sys.argv[1]
|
||||
except Exception:
|
||||
configure_ac = 'configure.ac'
|
||||
|
||||
try:
|
||||
meson_build = sys.argv[2]
|
||||
except Exception:
|
||||
meson_build = 'meson.build'
|
||||
|
||||
CONFIGURE_MAJOR_VERSION_RE = re.compile(
|
||||
r'''
|
||||
^
|
||||
\s*
|
||||
m4_define\(
|
||||
\s*
|
||||
\[gtk_major_version\]
|
||||
\s*
|
||||
,
|
||||
\s*
|
||||
\[
|
||||
(?P<version>[0-9]+)
|
||||
\]
|
||||
\s*
|
||||
\)
|
||||
$
|
||||
''',
|
||||
re.UNICODE | re.VERBOSE
|
||||
)
|
||||
|
||||
CONFIGURE_MINOR_VERSION_RE = re.compile(
|
||||
r'''
|
||||
^
|
||||
\s*
|
||||
m4_define\(
|
||||
\s*
|
||||
\[gtk_minor_version\]
|
||||
\s*
|
||||
,
|
||||
\s*
|
||||
\[
|
||||
(?P<version>[0-9]+)
|
||||
\]
|
||||
\s*
|
||||
\)
|
||||
$
|
||||
''',
|
||||
re.UNICODE | re.VERBOSE
|
||||
)
|
||||
|
||||
CONFIGURE_MICRO_VERSION_RE = re.compile(
|
||||
r'''
|
||||
^
|
||||
\s*
|
||||
m4_define\(
|
||||
\s*
|
||||
\[gtk_micro_version\]
|
||||
\s*
|
||||
,
|
||||
\s*
|
||||
\[
|
||||
(?P<version>[0-9]+)
|
||||
\]
|
||||
\s*
|
||||
\)
|
||||
$
|
||||
''',
|
||||
re.UNICODE | re.VERBOSE
|
||||
)
|
||||
|
||||
CONFIGURE_INTERFACE_AGE_RE = re.compile(
|
||||
r'''
|
||||
^
|
||||
\s*
|
||||
m4_define\(
|
||||
\s*
|
||||
\[gtk_interface_age\]
|
||||
\s*
|
||||
,
|
||||
\s*
|
||||
\[
|
||||
(?P<age>[0-9]+)
|
||||
\]
|
||||
\s*
|
||||
\)
|
||||
$
|
||||
''',
|
||||
re.UNICODE | re.VERBOSE
|
||||
)
|
||||
|
||||
MESON_VERSION_RE = re.compile(
|
||||
r'''
|
||||
^
|
||||
\s*
|
||||
version
|
||||
\s*
|
||||
:{1}
|
||||
\s*
|
||||
\'{1}
|
||||
(?P<major>[0-9]+)
|
||||
\.{1}
|
||||
(?P<minor>[0-9]+)
|
||||
\.{1}
|
||||
(?P<micro>[0-9]+)
|
||||
\'{1}
|
||||
\s*
|
||||
,?
|
||||
$
|
||||
''',
|
||||
re.UNICODE | re.VERBOSE
|
||||
)
|
||||
|
||||
MESON_INTERFACE_AGE_RE = re.compile(
|
||||
r'''
|
||||
^\s*gtk_interface_age\s*={1}\s*(?P<age>[0-9]+)\s*$
|
||||
''',
|
||||
re.UNICODE | re.VERBOSE
|
||||
)
|
||||
|
||||
version = {}
|
||||
|
||||
with open(configure_ac, 'r') as f:
|
||||
line = f.readline()
|
||||
while line:
|
||||
res = CONFIGURE_MAJOR_VERSION_RE.match(line)
|
||||
if res:
|
||||
if 'major' in version:
|
||||
print(f'Redefinition of major version; version is already set to {version["major"]}')
|
||||
sys.exit(1)
|
||||
version['major'] = res.group('version')
|
||||
line = f.readline()
|
||||
continue
|
||||
res = CONFIGURE_MINOR_VERSION_RE.match(line)
|
||||
if res:
|
||||
if 'minor' in version:
|
||||
print(f'Redefinition of minor version; version is already set to {version["minor"]}')
|
||||
sys.exit(1)
|
||||
version['minor'] = res.group('version')
|
||||
line = f.readline()
|
||||
continue
|
||||
res = CONFIGURE_MICRO_VERSION_RE.match(line)
|
||||
if res:
|
||||
if 'micro' in version:
|
||||
print(f'Redefinition of micro version; version is already set to {version["micro"]}')
|
||||
sys.exit(1)
|
||||
version['micro'] = res.group('version')
|
||||
line = f.readline()
|
||||
continue
|
||||
res = CONFIGURE_INTERFACE_AGE_RE.match(line)
|
||||
if res:
|
||||
if 'age' in version:
|
||||
print(f'Redefinition of interface age; age is already set to {version["age"]}')
|
||||
sys.exit(1)
|
||||
version['age'] = res.group('age')
|
||||
line = f.readline()
|
||||
continue
|
||||
if ('major', 'minor', 'micro', 'age') in version:
|
||||
break
|
||||
line = f.readline()
|
||||
|
||||
print(f'GTK version defined in {configure_ac}: {version["major"]}.{version["minor"]}.{version["micro"]} (age: {version["age"]})')
|
||||
|
||||
configure_version = version
|
||||
version = {}
|
||||
|
||||
with open(meson_build, 'r') as f:
|
||||
line = f.readline()
|
||||
inside_project = False
|
||||
while line:
|
||||
if line.startswith('project('):
|
||||
inside_project = True
|
||||
if inside_project:
|
||||
res = MESON_VERSION_RE.match(line)
|
||||
if res:
|
||||
version['major'] = res.group('major')
|
||||
version['minor'] = res.group('minor')
|
||||
version['micro'] = res.group('micro')
|
||||
if inside_project and line.endswith(')'):
|
||||
inside_project = False
|
||||
res = MESON_INTERFACE_AGE_RE.match(line)
|
||||
if res:
|
||||
version['age'] = res.group('age')
|
||||
if ('major', 'minor', 'micro', 'age') in version:
|
||||
break
|
||||
line = f.readline()
|
||||
|
||||
print(f'GTK version defined in {meson_build}: {version["major"]}.{version["minor"]}.{version["micro"]} (age: {version["age"]})')
|
||||
|
||||
meson_version = version
|
||||
|
||||
if configure_version != meson_version:
|
||||
print('Version mismatch between Autotools and Meson builds')
|
||||
sys.exit(1)
|
||||
|
||||
sys.exit(0)
|
@ -281,3 +281,6 @@
|
||||
#mesondefine GTK_LOCALEDIR
|
||||
|
||||
#mesondefine ISO_CODES_PREFIX
|
||||
|
||||
/* Define if tracker3 is available */
|
||||
#mesondefine HAVE_TRACKER3
|
@ -263,7 +263,7 @@
|
||||
#define PACKAGE_NAME "gtk+"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "gtk+ 3.24.20"
|
||||
#define PACKAGE_STRING "gtk+ 3.24.21"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "gtk+"
|
||||
@ -272,7 +272,7 @@
|
||||
#define PACKAGE_URL ""
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "3.24.20"
|
||||
#define PACKAGE_VERSION "3.24.21"
|
||||
|
||||
/* Use NSBundle functions to determine load paths for libraries, translations,
|
||||
etc. */
|
||||
|
54
configure
vendored
54
configure
vendored
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for gtk+ 3.24.20.
|
||||
# Generated by GNU Autoconf 2.69 for gtk+ 3.24.21.
|
||||
#
|
||||
# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B>.
|
||||
#
|
||||
@ -591,8 +591,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='gtk+'
|
||||
PACKAGE_TARNAME='gtk+'
|
||||
PACKAGE_VERSION='3.24.20'
|
||||
PACKAGE_STRING='gtk+ 3.24.20'
|
||||
PACKAGE_VERSION='3.24.21'
|
||||
PACKAGE_STRING='gtk+ 3.24.21'
|
||||
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B'
|
||||
PACKAGE_URL=''
|
||||
|
||||
@ -1670,7 +1670,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures gtk+ 3.24.20 to adapt to many kinds of systems.
|
||||
\`configure' configures gtk+ 3.24.21 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1744,7 +1744,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of gtk+ 3.24.20:";;
|
||||
short | recursive ) echo "Configuration of gtk+ 3.24.21:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1988,7 +1988,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
gtk+ configure 3.24.20
|
||||
gtk+ configure 3.24.21
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
@ -2818,7 +2818,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by gtk+ $as_me 3.24.20, which was
|
||||
It was created by gtk+ $as_me 3.24.21, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -3811,7 +3811,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='gtk+'
|
||||
VERSION='3.24.20'
|
||||
VERSION='3.24.21'
|
||||
|
||||
|
||||
# Some tools Automake needs.
|
||||
@ -4091,10 +4091,10 @@ AM_BACKSLASH='\'
|
||||
|
||||
GTK_MAJOR_VERSION=3
|
||||
GTK_MINOR_VERSION=24
|
||||
GTK_MICRO_VERSION=20
|
||||
GTK_INTERFACE_AGE=16
|
||||
GTK_BINARY_AGE=2420
|
||||
GTK_VERSION=3.24.20
|
||||
GTK_MICRO_VERSION=21
|
||||
GTK_INTERFACE_AGE=17
|
||||
GTK_BINARY_AGE=2421
|
||||
GTK_VERSION=3.24.21
|
||||
GTK_API_VERSION=3.0
|
||||
GTK_BINARY_VERSION=3.0.0
|
||||
|
||||
@ -4116,7 +4116,7 @@ GTK_BINARY_VERSION=3.0.0
|
||||
|
||||
|
||||
|
||||
LT_VERSION_INFO="2404:16:2404"
|
||||
LT_VERSION_INFO="2404:17:2404"
|
||||
LT_CURRENT_MINUS_AGE=0
|
||||
|
||||
|
||||
@ -21047,7 +21047,7 @@ Usage: $0 [OPTIONS]
|
||||
Report bugs to <bug-libtool@gnu.org>."
|
||||
|
||||
lt_cl_version="\
|
||||
gtk+ config.lt 3.24.20
|
||||
gtk+ config.lt 3.24.21
|
||||
configured by $0, generated by GNU Autoconf 2.69.
|
||||
|
||||
Copyright (C) 2011 Free Software Foundation, Inc.
|
||||
@ -24762,7 +24762,7 @@ main (void)
|
||||
glib_major_version, glib_minor_version, glib_micro_version);
|
||||
printf ("*** was found! If pkg-config was correct, then it is best\n");
|
||||
printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
|
||||
printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
|
||||
printf("*** by modifying your LD_LIBRARY_PATH environment variable, or by editing\n");
|
||||
printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
|
||||
printf("*** required on your system.\n");
|
||||
printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
|
||||
@ -24772,7 +24772,7 @@ main (void)
|
||||
(glib_minor_version != GLIB_MINOR_VERSION) ||
|
||||
(glib_micro_version != GLIB_MICRO_VERSION))
|
||||
{
|
||||
printf("*** GLIB header files (version %d.%d.%d) do not match\n",
|
||||
printf("*** GLib header files (version %d.%d.%d) do not match\n",
|
||||
GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
|
||||
printf("*** library (version %d.%d.%d)\n",
|
||||
glib_major_version, glib_minor_version, glib_micro_version);
|
||||
@ -24787,18 +24787,18 @@ main (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
|
||||
printf("\n*** An old version of GLib (%u.%u.%u) was found.\n",
|
||||
glib_major_version, glib_minor_version, glib_micro_version);
|
||||
printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
|
||||
printf("*** You need a version of GLib newer than %u.%u.%u. The latest version of\n",
|
||||
major, minor, micro);
|
||||
printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
|
||||
printf("*** GLib is always available from ftp://ftp.gtk.org.\n");
|
||||
printf("***\n");
|
||||
printf("*** If you have already installed a sufficiently new version, this error\n");
|
||||
printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
|
||||
printf("*** being found. The easiest way to fix this is to remove the old version\n");
|
||||
printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
|
||||
printf("*** of GLib, but you can also set the PKG_CONFIG environment to point to the\n");
|
||||
printf("*** correct copy of pkg-config. (In this case, you will have to\n");
|
||||
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
|
||||
printf("*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf\n");
|
||||
printf("*** so that the correct libraries are found at run-time))\n");
|
||||
}
|
||||
}
|
||||
@ -24833,7 +24833,7 @@ $as_echo "no" >&6; }
|
||||
if test -f conf.glibtest ; then
|
||||
:
|
||||
else
|
||||
echo "*** Could not run GLIB test program, checking why..."
|
||||
echo "*** Could not run GLib test program, checking why..."
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
ac_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $GLIB_CFLAGS"
|
||||
@ -24854,8 +24854,8 @@ main ()
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
echo "*** The test program compiled, but did not run. This usually means"
|
||||
echo "*** that the run-time linker is not finding GLIB or finding the wrong"
|
||||
echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
|
||||
echo "*** that the run-time linker is not finding GLib or finding the wrong"
|
||||
echo "*** version of GLib. If it is not finding GLib, you'll need to set your"
|
||||
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
|
||||
echo "*** to the installed location Also, make sure you have run ldconfig if that"
|
||||
echo "*** is required on your system"
|
||||
@ -24864,7 +24864,7 @@ if ac_fn_c_try_link "$LINENO"; then :
|
||||
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
|
||||
else
|
||||
echo "*** The test program failed to compile or link. See the file config.log for the"
|
||||
echo "*** exact error that occured. This usually means GLIB is incorrectly installed."
|
||||
echo "*** exact error that occurred. This usually means GLib is incorrectly installed."
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
@ -30094,7 +30094,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by gtk+ $as_me 3.24.20, which was
|
||||
This file was extended by gtk+ $as_me 3.24.21, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -30160,7 +30160,7 @@ _ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
ac_cs_version="\\
|
||||
gtk+ config.status 3.24.20
|
||||
gtk+ config.status 3.24.21
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
@ -10,8 +10,8 @@
|
||||
|
||||
m4_define([gtk_major_version], [3])
|
||||
m4_define([gtk_minor_version], [24])
|
||||
m4_define([gtk_micro_version], [20])
|
||||
m4_define([gtk_interface_age], [16])
|
||||
m4_define([gtk_micro_version], [21])
|
||||
m4_define([gtk_interface_age], [17])
|
||||
m4_define([gtk_binary_age],
|
||||
[m4_eval(100 * gtk_minor_version + gtk_micro_version)])
|
||||
m4_define([gtk_version],
|
||||
|
@ -189404,14 +189404,16 @@ static const SECTION union { const guint8 data[1515119]; const double alignment;
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { demo_resource_data.data, sizeof (demo_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *demo_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *demo_get_resource (void);
|
||||
GResource *demo_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -5052,14 +5052,16 @@ static const SECTION union { const guint8 data[40292]; const double alignment; v
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { iconbrowser_resource_data.data, sizeof (iconbrowser_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *iconbrowser_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *iconbrowser_get_resource (void);
|
||||
GResource *iconbrowser_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -14298,14 +14298,16 @@ static const SECTION union { const guint8 data[114260]; const double alignment;
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { widget_factory_resource_data.data, sizeof (widget_factory_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *widget_factory_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *widget_factory_get_resource (void);
|
||||
GResource *widget_factory_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -400,7 +400,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="property_type">
|
||||
<span class="type">GdkDeviceTool</span> *</td>
|
||||
<a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> *</td>
|
||||
<td class="property_name"><a class="link" href="GdkDevice.html#GdkDevice--tool" title="The “tool” property">tool</a></td>
|
||||
<td class="property_flags">Read</td>
|
||||
</tr>
|
||||
@ -1898,7 +1898,7 @@ application's windows.</p>
|
||||
<div class="refsect2">
|
||||
<a name="gdk-device-tool-get-serial"></a><h3>gdk_device_tool_get_serial ()</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">guint64</span>
|
||||
gdk_device_tool_get_serial (<em class="parameter"><code><span class="type">GdkDeviceTool</span> *tool</code></em>);</pre>
|
||||
gdk_device_tool_get_serial (<em class="parameter"><code><a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> *tool</code></em>);</pre>
|
||||
<p>Gets the serial of this tool, this value can be used to identify a
|
||||
physical tool (eg. a tablet pen) across program executions.</p>
|
||||
<div class="refsect3">
|
||||
@ -1911,7 +1911,7 @@ physical tool (eg. a tablet pen) across program executions.</p>
|
||||
</colgroup>
|
||||
<tbody><tr>
|
||||
<td class="parameter_name"><p>tool</p></td>
|
||||
<td class="parameter_description"><p>a <span class="type">GdkDeviceTool</span></p></td>
|
||||
<td class="parameter_description"><p>a <a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a></p></td>
|
||||
<td class="parameter_annotations"> </td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
@ -1926,7 +1926,7 @@ physical tool (eg. a tablet pen) across program executions.</p>
|
||||
<div class="refsect2">
|
||||
<a name="gdk-device-tool-get-tool-type"></a><h3>gdk_device_tool_get_tool_type ()</h3>
|
||||
<pre class="programlisting"><a class="link" href="GdkDevice.html#GdkDeviceToolType" title="enum GdkDeviceToolType"><span class="returnvalue">GdkDeviceToolType</span></a>
|
||||
gdk_device_tool_get_tool_type (<em class="parameter"><code><span class="type">GdkDeviceTool</span> *tool</code></em>);</pre>
|
||||
gdk_device_tool_get_tool_type (<em class="parameter"><code><a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> *tool</code></em>);</pre>
|
||||
<p>Gets the <a class="link" href="GdkDevice.html#GdkDeviceToolType" title="enum GdkDeviceToolType"><span class="type">GdkDeviceToolType</span></a> of the tool.</p>
|
||||
<div class="refsect3">
|
||||
<a name="gdk-device-tool-get-tool-type.parameters"></a><h4>Parameters</h4>
|
||||
@ -1938,7 +1938,7 @@ gdk_device_tool_get_tool_type (<em class="parameter"><code><span class="type">Gd
|
||||
</colgroup>
|
||||
<tbody><tr>
|
||||
<td class="parameter_name"><p>tool</p></td>
|
||||
<td class="parameter_description"><p>a <span class="type">GdkDeviceTool</span></p></td>
|
||||
<td class="parameter_description"><p>a <a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a></p></td>
|
||||
<td class="parameter_annotations"> </td>
|
||||
</tr></tbody>
|
||||
</table></div>
|
||||
@ -2575,7 +2575,7 @@ of touches is unknown.</p>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="GdkDevice--tool"></a><h3>The <code class="literal">“tool”</code> property</h3>
|
||||
<pre class="programlisting"> “tool” <span class="type">GdkDeviceTool</span> *</pre>
|
||||
<pre class="programlisting"> “tool” <a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> *</pre>
|
||||
<p>The tool that is currently used with this device.</p>
|
||||
<p>Owner: GdkDevice</p>
|
||||
<p>Flags: Read</p>
|
||||
@ -2644,7 +2644,7 @@ axes and keys.</p>
|
||||
<a name="GdkDevice-tool-changed"></a><h3>The <code class="literal">“tool-changed”</code> signal</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
user_function (<a class="link" href="GdkDevice.html" title="GdkDevice"><span class="type">GdkDevice</span></a> *device,
|
||||
<span class="type">GdkDeviceTool</span> *tool,
|
||||
<a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> *tool,
|
||||
<span class="type">gpointer</span> user_data)</pre>
|
||||
<p>The ::tool-changed signal is emitted on pen/eraser
|
||||
<span class="type">GdkDevices</span> whenever tools enter or leave proximity.</p>
|
||||
|
@ -689,7 +689,7 @@ input device is removed (e.g. unplugged).</p>
|
||||
<a name="GdkSeat-tool-added"></a><h3>The <code class="literal">“tool-added”</code> signal</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
user_function (<a class="link" href="GdkSeat.html" title="GdkSeat"><span class="type">GdkSeat</span></a> *seat,
|
||||
<span class="type">GdkDeviceTool</span> *tool,
|
||||
<a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> *tool,
|
||||
<span class="type">gpointer</span> user_data)</pre>
|
||||
<p>The ::tool-added signal is emitted whenever a new tool
|
||||
is made known to the seat. The tool may later be assigned
|
||||
@ -712,7 +712,7 @@ will emit the <a class="link" href="GdkDevice.html#GdkDevice-tool-changed" title
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="parameter_name"><p>tool</p></td>
|
||||
<td class="parameter_description"><p>the new <span class="type">GdkDeviceTool</span> known to the seat</p></td>
|
||||
<td class="parameter_description"><p>the new <a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> known to the seat</p></td>
|
||||
<td class="parameter_annotations"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
@ -731,7 +731,7 @@ will emit the <a class="link" href="GdkDevice.html#GdkDevice-tool-changed" title
|
||||
<a name="GdkSeat-tool-removed"></a><h3>The <code class="literal">“tool-removed”</code> signal</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
user_function (<a class="link" href="GdkSeat.html" title="GdkSeat"><span class="type">GdkSeat</span></a> *seat,
|
||||
<span class="type">GdkDeviceTool</span> *tool,
|
||||
<a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> *tool,
|
||||
<span class="type">gpointer</span> user_data)</pre>
|
||||
<p>This signal is emitted whenever a tool is no longer known
|
||||
to this <em class="parameter"><code>seat</code></em>
|
||||
@ -752,7 +752,7 @@ to this <em class="parameter"><code>seat</code></em>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="parameter_name"><p>tool</p></td>
|
||||
<td class="parameter_description"><p>the just removed <span class="type">GdkDeviceTool</span></p></td>
|
||||
<td class="parameter_description"><p>the just removed <a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a></p></td>
|
||||
<td class="parameter_annotations"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -2021,7 +2021,7 @@ denote counter-clockwise movements</p></td>
|
||||
<tr>
|
||||
<td class="struct_member_name"><p><span class="type">gdouble</span> <em class="structfield"><code><a name="GdkEventTouchpadPinch.scale"></a>scale</code></em>;</p></td>
|
||||
<td class="struct_member_description"><p>The current scale, relative to that at the time of
|
||||
the corresponding <code class="literal">GDK_TOUCHPAD_GESTURE_PHASE_BEGIN</code> event</p></td>
|
||||
the corresponding <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-TOUCHPAD-GESTURE-PHASE-BEGIN:CAPS"><code class="literal">GDK_TOUCHPAD_GESTURE_PHASE_BEGIN</code></a> event</p></td>
|
||||
<td class="struct_member_annotations"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -361,7 +361,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="function_type">
|
||||
<span class="returnvalue">GdkDeviceTool</span> *
|
||||
<a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="returnvalue">GdkDeviceTool</span></a> *
|
||||
</td>
|
||||
<td class="function_name">
|
||||
<a class="link" href="gdk3-Events.html#gdk-event-get-device-tool" title="gdk_event_get_device_tool ()">gdk_event_get_device_tool</a> <span class="c_punctuation">()</span>
|
||||
@ -1817,13 +1817,13 @@ for instance by <a class="link" href="gdk3-Events.html#gdk-event-copy" title="gd
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="gdk-event-get-device-tool"></a><h3>gdk_event_get_device_tool ()</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">GdkDeviceTool</span> *
|
||||
<pre class="programlisting"><a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="returnvalue">GdkDeviceTool</span></a> *
|
||||
gdk_event_get_device_tool (<em class="parameter"><code>const <a class="link" href="gdk3-Event-Structures.html#GdkEvent" title="union GdkEvent"><span class="type">GdkEvent</span></a> *event</code></em>);</pre>
|
||||
<p>If the event was generated by a device that supports
|
||||
different tools (eg. a tablet), this function will
|
||||
return a <span class="type">GdkDeviceTool</span> representing the tool that
|
||||
return a <a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> representing the tool that
|
||||
caused the event. Otherwise, <code class="literal">NULL</code> will be returned.</p>
|
||||
<p>Note: the <span class="type">GdkDeviceTool</span><!-- -->s will be constant during
|
||||
<p>Note: the <a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a><!-- -->s will be constant during
|
||||
the application lifetime, if settings must be stored
|
||||
persistently across runs, see <a class="link" href="GdkDevice.html#gdk-device-tool-get-serial" title="gdk_device_tool_get_serial ()"><code class="function">gdk_device_tool_get_serial()</code></a></p>
|
||||
<div class="refsect3">
|
||||
@ -1853,7 +1853,7 @@ persistently across runs, see <a class="link" href="GdkDevice.html#gdk-device-to
|
||||
<a name="gdk-event-set-device-tool"></a><h3>gdk_event_set_device_tool ()</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
gdk_event_set_device_tool (<em class="parameter"><code><a class="link" href="gdk3-Event-Structures.html#GdkEvent" title="union GdkEvent"><span class="type">GdkEvent</span></a> *event</code></em>,
|
||||
<em class="parameter"><code><span class="type">GdkDeviceTool</span> *tool</code></em>);</pre>
|
||||
<em class="parameter"><code><a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> *tool</code></em>);</pre>
|
||||
<p>Sets the device tool for this event, should be rarely used.</p>
|
||||
<div class="refsect3">
|
||||
<a name="gdk-event-set-device-tool.parameters"></a><h4>Parameters</h4>
|
||||
@ -2334,7 +2334,7 @@ added in 3.22.</p>
|
||||
Most of these masks map onto one or more of the <a class="link" href="gdk3-Events.html#GdkEventType" title="enum GdkEventType"><span class="type">GdkEventType</span></a> event types
|
||||
above.</p>
|
||||
<p>See the input handling overview for details of
|
||||
event masks and event propagation.</p>
|
||||
event masks and <a href="https://developer.gnome.org/gtk4/input-overview.html#event-propagation">event propagation</a>.</p>
|
||||
<p><a class="link" href="gdk3-Events.html#GDK-POINTER-MOTION-HINT-MASK:CAPS"><code class="literal">GDK_POINTER_MOTION_HINT_MASK</code></a> is deprecated. It is a special mask
|
||||
to reduce the number of <a class="link" href="gdk3-Events.html#GDK-MOTION-NOTIFY:CAPS"><code class="literal">GDK_MOTION_NOTIFY</code></a> events received. When using
|
||||
<a class="link" href="gdk3-Events.html#GDK-POINTER-MOTION-HINT-MASK:CAPS"><code class="literal">GDK_POINTER_MOTION_HINT_MASK</code></a>, fewer <a class="link" href="gdk3-Events.html#GDK-MOTION-NOTIFY:CAPS"><code class="literal">GDK_MOTION_NOTIFY</code></a> events will
|
||||
|
@ -15,7 +15,7 @@
|
||||
<div>
|
||||
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GDK 3 Reference Manual</p></th></tr></table></div>
|
||||
<div><p class="releaseinfo">
|
||||
This document is for the GDK 3 library, version 3.24.20
|
||||
This document is for the GDK 3 library, version 3.24.21
|
||||
|
||||
The latest versions can be found online at
|
||||
<a class="ulink" href="https://developer.gnome.org/gdk3/" target="_top">https://developer.gnome.org/gdk3/</a>.
|
||||
|
@ -61,18 +61,6 @@ a:hover
|
||||
color: #729fcf;
|
||||
}
|
||||
|
||||
div.informaltable table
|
||||
{
|
||||
border-collapse: separate;
|
||||
border-spacing: 1em 0.3em;
|
||||
border: none;
|
||||
}
|
||||
|
||||
div.informaltable table td, div.informaltable table th
|
||||
{
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.function_type,
|
||||
.variable_type,
|
||||
.property_type,
|
||||
@ -127,6 +115,7 @@ td p
|
||||
margin: 0.25em;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"],
|
||||
div.table table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
@ -135,6 +124,7 @@ div.table table
|
||||
border: solid 1px #babdb6;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"] td, div.informaltable table th,
|
||||
div.table table td, div.table table th
|
||||
{
|
||||
/* tango:aluminium 3 */
|
||||
@ -143,13 +133,7 @@ div.table table td, div.table table th
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.table table tr.subhead
|
||||
{
|
||||
/* tango:aluminium 2 */
|
||||
background-color: #d3d7cf;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"] th,
|
||||
div.table table th
|
||||
{
|
||||
/* tango:aluminium 2 */
|
||||
|
@ -1 +1 @@
|
||||
3.24.20
|
||||
3.24.21
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: broadwayd
|
||||
.\" Author: Alexander Larsson
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk-builder-tool
|
||||
.\" Author: Matthias Clasen
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk-encode-symbolic-svg
|
||||
.\" Author: Alexander Larsson
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk-launch
|
||||
.\" Author: Tomáš Bžatek <tbzatek@redhat.com>
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk-query-immodules-3.0
|
||||
.\" Author: Matthias Clasen
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk-query-settings
|
||||
.\" Author: Timm Bäder
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk-update-icon-cache
|
||||
.\" Author: Matthias Clasen
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk3-demo-application
|
||||
.\" Author: Matthias Clasen
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk3-demo
|
||||
.\" Author: Matthias Clasen
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk3-icon-browser
|
||||
.\" Author: Matthias Clasen
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" Title: gtk3-widget-factory
|
||||
.\" Author: Matthias Clasen
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 04/27/2020
|
||||
.\" Date: 06/28/2020
|
||||
.\" Manual: User Commands
|
||||
.\" Source: GTK+
|
||||
.\" Language: English
|
||||
|
@ -1665,18 +1665,24 @@ developer</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="enum_member_name"><p><a name="GTK-LICENSE-BSD-3:CAPS"></a>GTK_LICENSE_BSD_3</p></td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td class="enum_member_description">
|
||||
<p>The 3-clause BSD licence. Since: 3.24.20.</p>
|
||||
</td>
|
||||
<td class="enum_member_annotations"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="enum_member_name"><p><a name="GTK-LICENSE-APACHE-2-0:CAPS"></a>GTK_LICENSE_APACHE_2_0</p></td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td class="enum_member_description">
|
||||
<p>The Apache License, version 2.0. Since: 3.24.20.</p>
|
||||
</td>
|
||||
<td class="enum_member_annotations"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="enum_member_name"><p><a name="GTK-LICENSE-MPL-2-0:CAPS"></a>GTK_LICENSE_MPL_2_0</p></td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td class="enum_member_description">
|
||||
<p>The Mozilla Public License, version 2.0. Since: 3.24.20.</p>
|
||||
</td>
|
||||
<td class="enum_member_annotations"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
|
@ -355,7 +355,7 @@ Do not confuse GtkBuilder UI Definitions with
|
||||
<a class="link" href="GtkUIManager.html#XML-UI" title="UI Definitions">GtkUIManager UI Definitions</a>, which are more limited in scope.
|
||||
It is common to use <code class="literal">.ui</code> as the filename extension for files containing
|
||||
GtkBuilder UI definitions.</p>
|
||||
<p><a class="ulink" href="https://git.gnome.org/browse/gtk+/tree/gtk/gtkbuilder.rnc" target="_top">RELAX NG Compact Syntax</a></p>
|
||||
<p><a class="ulink" href="https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/gtkbuilder.rnc" target="_top">RELAX NG Compact Syntax</a></p>
|
||||
<p>The toplevel element is <interface>. It optionally takes a “domain”
|
||||
attribute, which will make the builder look for translated strings
|
||||
using <code class="function">dgettext()</code> in the domain specified. This can also be done by
|
||||
|
@ -1311,7 +1311,7 @@ Please see the documentation for those functions for an example of using
|
||||
<tr>
|
||||
<td class="parameter_name"><p>name</p></td>
|
||||
<td class="parameter_description"><p>the filename to use, as a UTF-8 string. </p></td>
|
||||
<td class="parameter_annotations"><span class="annotation">[<acronym title="Override the parsed C type with given type."><span class="acronym">type</span></acronym> filename]</span></td>
|
||||
<td class="parameter_annotations"><span class="annotation">[<acronym title="Override the parsed C type with given type."><span class="acronym">type</span></acronym> utf8]</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
|
@ -98,7 +98,7 @@ those for <a class="link" href="GtkDialog.html" title="GtkDialog"><span class="t
|
||||
own. Instead, you should use the functions that work on a
|
||||
<a class="link" href="GtkFileChooser.html" title="GtkFileChooser"><span class="type">GtkFileChooser</span></a>.</p>
|
||||
<p>If you want to integrate well with the platform you should use the
|
||||
<span class="type">GtkFileChooserNative</span> API, which will use a platform-specific
|
||||
<a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> API, which will use a platform-specific
|
||||
dialog if available and fall back to GtkFileChooserDialog
|
||||
otherwise.</p>
|
||||
<div class="refsect3">
|
||||
|
@ -370,7 +370,7 @@ to know about the possible lifetimes of a <a href="https://developer.gnome.org/g
|
||||
touchpad gesture events. The only precautions users of <a class="link" href="GtkGesture.html" title="GtkGesture"><span class="type">GtkGesture</span></a> should do
|
||||
to enable this support are:</p>
|
||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||
<li class="listitem"><p>Enabling <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-TOUCHPAD-GESTURE-MASK:CAPS"><code class="literal">GDK_TOUCHPAD_GESTURE_MASK</code></a> on their <span class="type">GdkWindows</span></p></li>
|
||||
<li class="listitem"><p>Enabling <code class="literal">GDK_TOUCHPAD_GESTURE_MASK</code> on their <span class="type">GdkWindows</span></p></li>
|
||||
<li class="listitem"><p>If the gesture has <a class="link" href="GtkEventController.html#GTK-PHASE-NONE:CAPS"><code class="literal">GTK_PHASE_NONE</code></a>, ensuring events of type
|
||||
<a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-TOUCHPAD-SWIPE:CAPS"><code class="literal">GDK_TOUCHPAD_SWIPE</code></a> and <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-TOUCHPAD-PINCH:CAPS"><code class="literal">GDK_TOUCHPAD_PINCH</code></a> are handled by the <a class="link" href="GtkGesture.html" title="GtkGesture"><span class="type">GtkGesture</span></a></p></li>
|
||||
</ul></div>
|
||||
|
@ -67,7 +67,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="function_type">
|
||||
<span class="returnvalue">GdkDeviceTool</span> *
|
||||
<a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="returnvalue">GdkDeviceTool</span></a> *
|
||||
</td>
|
||||
<td class="function_name">
|
||||
<a class="link" href="GtkGestureStylus.html#gtk-gesture-stylus-get-device-tool" title="gtk_gesture_stylus_get_device_tool ()">gtk_gesture_stylus_get_device_tool</a> <span class="c_punctuation">()</span>
|
||||
@ -261,9 +261,9 @@ signals.</p>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="gtk-gesture-stylus-get-device-tool"></a><h3>gtk_gesture_stylus_get_device_tool ()</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">GdkDeviceTool</span> *
|
||||
<pre class="programlisting"><a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="returnvalue">GdkDeviceTool</span></a> *
|
||||
gtk_gesture_stylus_get_device_tool (<em class="parameter"><code><a class="link" href="GtkGestureStylus.html" title="GtkGestureStylus"><span class="type">GtkGestureStylus</span></a> *gesture</code></em>);</pre>
|
||||
<p>Returns the <span class="type">GdkDeviceTool</span> currently driving input through this gesture.
|
||||
<p>Returns the <a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDeviceTool-struct"><span class="type">GdkDeviceTool</span></a> currently driving input through this gesture.
|
||||
This function must be called from either the <a class="link" href="GtkGestureStylus.html#GtkGestureStylus-down" title="The “down” signal"><span class="type">“down”</span></a>,
|
||||
<a class="link" href="GtkGestureStylus.html#GtkGestureStylus-motion" title="The “motion” signal"><span class="type">“motion”</span></a>, <a class="link" href="GtkGestureStylus.html#GtkGestureStylus-up" title="The “up” signal"><span class="type">“up”</span></a> or <a class="link" href="GtkGestureStylus.html#GtkGestureStylus-proximity" title="The “proximity” signal"><span class="type">“proximity”</span></a>
|
||||
signal handlers.</p>
|
||||
|
@ -165,7 +165,7 @@ preference dialogs to allow users to obtain and revoke authorizations
|
||||
needed to operate the controls. The required authorization is represented
|
||||
by a <span class="type">GPermission</span> object. Concrete implementations of <span class="type">GPermission</span> may use
|
||||
PolicyKit or some other authorization framework. To obtain a PolicyKit-based
|
||||
<span class="type">GPermission</span>, use <code class="function">polkit_permission_new()</code>.</p>
|
||||
<span class="type">GPermission</span>, use <a href="http://www.freedesktop.org/software/polkit/docs/latest/PolkitPermission.html#polkit-permission-new"><code class="function">polkit_permission_new()</code></a>.</p>
|
||||
<p>If the user is not currently allowed to perform the action, but can obtain
|
||||
the permission, the widget looks like this:</p>
|
||||
<p><span class="inlinemediaobject"><img src="lockbutton-locked.png"></span></p>
|
||||
|
@ -215,6 +215,11 @@
|
||||
<td class="property_flags">Read / Write</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="property_type"><span class="type">gfloat</span></td>
|
||||
<td class="property_name"><a class="link" href="GtkSettings.html#GtkSettings--gtk-cursor-aspect-ratio" title="The “gtk-cursor-aspect-ratio” property">gtk-cursor-aspect-ratio</a></td>
|
||||
<td class="property_flags">Read / Write</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="property_type"><span class="type">gboolean</span></td>
|
||||
<td class="property_name"><a class="link" href="GtkSettings.html#GtkSettings--gtk-cursor-blink" title="The “gtk-cursor-blink” property">gtk-cursor-blink</a></td>
|
||||
<td class="property_flags">Read / Write</td>
|
||||
@ -1398,6 +1403,16 @@ by ';' instead of newlines:</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="GtkSettings--gtk-cursor-aspect-ratio"></a><h3>The <code class="literal">“gtk-cursor-aspect-ratio”</code> property</h3>
|
||||
<pre class="programlisting"> “gtk-cursor-aspect-ratio” <span class="type">gfloat</span></pre>
|
||||
<p>The aspect ratio of the text caret.</p>
|
||||
<p>Owner: GtkSettings</p>
|
||||
<p>Flags: Read / Write</p>
|
||||
<p>Allowed values: [0,1]</p>
|
||||
<p>Default value: 0.04</p>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="GtkSettings--gtk-cursor-blink"></a><h3>The <code class="literal">“gtk-cursor-blink”</code> property</h3>
|
||||
<pre class="programlisting"> “gtk-cursor-blink” <span class="type">gboolean</span></pre>
|
||||
<p>Whether the cursor should blink.</p>
|
||||
|
@ -317,7 +317,7 @@ GtkToolPalette implements
|
||||
<p>A <a class="link" href="GtkToolPalette.html" title="GtkToolPalette"><span class="type">GtkToolPalette</span></a> allows you to add <a href="GtkToolItem.html#GtkToolItem-struct"><span class="type">GtkToolItems</span></a> to a palette-like
|
||||
container with different categories and drag and drop support.</p>
|
||||
<p>A <a class="link" href="GtkToolPalette.html" title="GtkToolPalette"><span class="type">GtkToolPalette</span></a> is created with a call to <a class="link" href="GtkToolPalette.html#gtk-tool-palette-new" title="gtk_tool_palette_new ()"><code class="function">gtk_tool_palette_new()</code></a>.</p>
|
||||
<p><a href="GtkToolItem.html#GtkToolItem-struct"><span class="type">GtkToolItems</span></a> cannot be added directly to a <a class="link" href="GtkToolPalette.html" title="GtkToolPalette"><span class="type">GtkToolPalette</span></a> -
|
||||
<p><a href="GtkToolItem.html#GtkToolItem-struct"><span class="type">GtkToolItems</span></a> cannot be added directly to a <a class="link" href="GtkToolPalette.html" title="GtkToolPalette"><span class="type">GtkToolPalette</span></a> -
|
||||
instead they are added to a <a class="link" href="GtkToolItemGroup.html" title="GtkToolItemGroup"><span class="type">GtkToolItemGroup</span></a> which can than be added
|
||||
to a <a class="link" href="GtkToolPalette.html" title="GtkToolPalette"><span class="type">GtkToolPalette</span></a>. To add a <a class="link" href="GtkToolItemGroup.html" title="GtkToolItemGroup"><span class="type">GtkToolItemGroup</span></a> to a <a class="link" href="GtkToolPalette.html" title="GtkToolPalette"><span class="type">GtkToolPalette</span></a>,
|
||||
use <a class="link" href="GtkContainer.html#gtk-container-add" title="gtk_container_add ()"><code class="function">gtk_container_add()</code></a>.</p>
|
||||
|
@ -454,7 +454,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="function_type">
|
||||
<a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="returnvalue">GdkEventMask</span></a>
|
||||
<span class="returnvalue">GdkEventMask</span>
|
||||
</td>
|
||||
<td class="function_name">
|
||||
<a class="link" href="GtkWidget.html#gtk-widget-get-device-events" title="gtk_widget_get_device_events ()">gtk_widget_get_device_events</a> <span class="c_punctuation">()</span>
|
||||
@ -2189,7 +2189,7 @@
|
||||
<td class="property_flags">Read / Write</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="property_type"><a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a></td>
|
||||
<td class="property_type"><span class="type">GdkEventMask</span></td>
|
||||
<td class="property_name"><a class="link" href="GtkWidget.html#GtkWidget--events" title="The “events” property">events</a></td>
|
||||
<td class="property_flags">Read / Write</td>
|
||||
</tr>
|
||||
@ -5239,7 +5239,7 @@ if it does not have a parent window. </p>
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
gtk_widget_set_events (<em class="parameter"><code><a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a> *widget</code></em>,
|
||||
<em class="parameter"><code><span class="type">gint</span> events</code></em>);</pre>
|
||||
<p>Sets the event mask (see <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a>) for a widget. The event
|
||||
<p>Sets the event mask (see <span class="type">GdkEventMask</span>) for a widget. The event
|
||||
mask determines which events a widget will receive. Keep in mind
|
||||
that different widgets have different default event masks, and by
|
||||
changing the event mask you may disrupt a widget’s functionality,
|
||||
@ -5278,7 +5278,7 @@ box.</p>
|
||||
<a name="gtk-widget-get-events"></a><h3>gtk_widget_get_events ()</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">gint</span>
|
||||
gtk_widget_get_events (<em class="parameter"><code><a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a> *widget</code></em>);</pre>
|
||||
<p>Returns the event mask (see <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a>) for the widget. These are the
|
||||
<p>Returns the event mask (see <span class="type">GdkEventMask</span>) for the widget. These are the
|
||||
events that the widget will receive.</p>
|
||||
<p>Note: Internally, the widget event mask will be the logical OR of the event
|
||||
mask set through <a class="link" href="GtkWidget.html#gtk-widget-set-events" title="gtk_widget_set_events ()"><code class="function">gtk_widget_set_events()</code></a> or <a class="link" href="GtkWidget.html#gtk-widget-add-events" title="gtk_widget_add_events ()"><code class="function">gtk_widget_add_events()</code></a>, and the
|
||||
@ -5332,7 +5332,7 @@ gtk_widget_add_events (<em class="parameter"><code><a class="link" href="GtkWidg
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="parameter_name"><p>events</p></td>
|
||||
<td class="parameter_description"><p>an event mask, see <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a></p></td>
|
||||
<td class="parameter_description"><p>an event mask, see <span class="type">GdkEventMask</span></p></td>
|
||||
<td class="parameter_annotations"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@ -5345,8 +5345,8 @@ gtk_widget_add_events (<em class="parameter"><code><a class="link" href="GtkWidg
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
gtk_widget_set_device_events (<em class="parameter"><code><a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a> *widget</code></em>,
|
||||
<em class="parameter"><code><a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDevice-struct"><span class="type">GdkDevice</span></a> *device</code></em>,
|
||||
<em class="parameter"><code><a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a> events</code></em>);</pre>
|
||||
<p>Sets the device event mask (see <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a>) for a widget. The event
|
||||
<em class="parameter"><code><span class="type">GdkEventMask</span> events</code></em>);</pre>
|
||||
<p>Sets the device event mask (see <span class="type">GdkEventMask</span>) for a widget. The event
|
||||
mask determines which events a widget will receive from <em class="parameter"><code>device</code></em>
|
||||
. Keep
|
||||
in mind that different widgets have different default event masks, and by
|
||||
@ -5390,7 +5390,7 @@ and receive events on the event box.</p>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="gtk-widget-get-device-events"></a><h3>gtk_widget_get_device_events ()</h3>
|
||||
<pre class="programlisting"><a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="returnvalue">GdkEventMask</span></a>
|
||||
<pre class="programlisting"><span class="returnvalue">GdkEventMask</span>
|
||||
gtk_widget_get_device_events (<em class="parameter"><code><a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a> *widget</code></em>,
|
||||
<em class="parameter"><code><a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDevice-struct"><span class="type">GdkDevice</span></a> *device</code></em>);</pre>
|
||||
<p>Returns the events mask for the widget corresponding to an specific device. These
|
||||
@ -5431,7 +5431,7 @@ are the events that the widget will receive when <em class="parameter"><code>dev
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
gtk_widget_add_device_events (<em class="parameter"><code><a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a> *widget</code></em>,
|
||||
<em class="parameter"><code><a href="https://developer.gnome.org/gdk4/GdkDevice.html#GdkDevice-struct"><span class="type">GdkDevice</span></a> *device</code></em>,
|
||||
<em class="parameter"><code><a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a> events</code></em>);</pre>
|
||||
<em class="parameter"><code><span class="type">GdkEventMask</span> events</code></em>);</pre>
|
||||
<p>Adds the device events in the bitfield <em class="parameter"><code>events</code></em>
|
||||
to the event mask for
|
||||
<em class="parameter"><code>widget</code></em>
|
||||
@ -5457,7 +5457,7 @@ gtk_widget_add_device_events (<em class="parameter"><code><a class="link" href="
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="parameter_name"><p>events</p></td>
|
||||
<td class="parameter_description"><p>an event mask, see <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a></p></td>
|
||||
<td class="parameter_description"><p>an event mask, see <span class="type">GdkEventMask</span></p></td>
|
||||
<td class="parameter_annotations"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
@ -14664,7 +14664,7 @@ allocation</p>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="GtkWidget--events"></a><h3>The <code class="literal">“events”</code> property</h3>
|
||||
<pre class="programlisting"> “events” <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEventMask"><span class="type">GdkEventMask</span></a></pre>
|
||||
<pre class="programlisting"> “events” <span class="type">GdkEventMask</span></pre>
|
||||
<p>The event mask that decides what kind of GdkEvents this widget gets.</p>
|
||||
<p>Owner: GtkWidget</p>
|
||||
<p>Flags: Read / Write</p>
|
||||
@ -15328,7 +15328,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
<p>The ::button-press-event signal will be emitted when a button
|
||||
(typically from a mouse) is pressed.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the
|
||||
widget needs to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-BUTTON-PRESS-MASK:CAPS"><span class="type">GDK_BUTTON_PRESS_MASK</span></a> mask.</p>
|
||||
widget needs to enable the <span class="type">GDK_BUTTON_PRESS_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-button-press-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -15375,7 +15375,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
<p>The ::button-release-event signal will be emitted when a button
|
||||
(typically from a mouse) is released.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the
|
||||
widget needs to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-BUTTON-RELEASE-MASK:CAPS"><span class="type">GDK_BUTTON_RELEASE_MASK</span></a> mask.</p>
|
||||
widget needs to enable the <span class="type">GDK_BUTTON_RELEASE_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-button-release-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -15547,7 +15547,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
stacking of the <em class="parameter"><code>widget</code></em>
|
||||
's window has changed.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-STRUCTURE-MASK:CAPS"><span class="type">GDK_STRUCTURE_MASK</span></a> mask. GDK will enable this mask
|
||||
to enable the <span class="type">GDK_STRUCTURE_MASK</span> mask. GDK will enable this mask
|
||||
automatically for all new windows.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-configure-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -15722,7 +15722,7 @@ You rarely get this signal, because most widgets disconnect themselves
|
||||
from their window before they destroy it, so no widget owns the
|
||||
window at destroy time.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-STRUCTURE-MASK:CAPS"><span class="type">GDK_STRUCTURE_MASK</span></a> mask. GDK will enable this mask
|
||||
to enable the <span class="type">GDK_STRUCTURE_MASK</span> mask. GDK will enable this mask
|
||||
automatically for all new windows.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-destroy-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -16611,7 +16611,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
the <em class="parameter"><code>widget</code></em>
|
||||
's window.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-ENTER-NOTIFY-MASK:CAPS"><span class="type">GDK_ENTER_NOTIFY_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_ENTER_NOTIFY_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-enter-notify-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -16781,7 +16781,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
enters the <em class="parameter"><code>widget</code></em>
|
||||
's window.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-FOCUS-CHANGE-MASK:CAPS"><span class="type">GDK_FOCUS_CHANGE_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_FOCUS_CHANGE_MASK</span> mask.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-focus-in-event.parameters"></a><h4>Parameters</h4>
|
||||
<div class="informaltable"><table class="informaltable" width="100%" border="0">
|
||||
@ -16828,7 +16828,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
leaves the <em class="parameter"><code>widget</code></em>
|
||||
's window.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-FOCUS-CHANGE-MASK:CAPS"><span class="type">GDK_FOCUS_CHANGE_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_FOCUS_CHANGE_MASK</span> mask.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-focus-out-event.parameters"></a><h4>Parameters</h4>
|
||||
<div class="informaltable"><table class="informaltable" width="100%" border="0">
|
||||
@ -17071,7 +17071,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
<p>The ::key-press-event signal is emitted when a key is pressed. The signal
|
||||
emission will reoccur at the key-repeat rate when the key is kept pressed.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-KEY-PRESS-MASK:CAPS"><span class="type">GDK_KEY_PRESS_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_KEY_PRESS_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-key-press-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -17116,7 +17116,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
<span class="type">gpointer</span> user_data)</pre>
|
||||
<p>The ::key-release-event signal is emitted when a key is released.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-KEY-RELEASE-MASK:CAPS"><span class="type">GDK_KEY_RELEASE_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_KEY_RELEASE_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-key-release-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -17208,7 +17208,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
the <em class="parameter"><code>widget</code></em>
|
||||
's window.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-LEAVE-NOTIFY-MASK:CAPS"><span class="type">GDK_LEAVE_NOTIFY_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_LEAVE_NOTIFY_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-leave-notify-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -17295,7 +17295,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
's window is
|
||||
mapped. A window is mapped when it becomes visible on the screen.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-STRUCTURE-MASK:CAPS"><span class="type">GDK_STRUCTURE_MASK</span></a> mask. GDK will enable this mask
|
||||
to enable the <span class="type">GDK_STRUCTURE_MASK</span> mask. GDK will enable this mask
|
||||
automatically for all new windows.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-map-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -17388,7 +17388,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
<p>The ::motion-notify-event signal is emitted when the pointer moves
|
||||
over the widget's <span class="type">GdkWindow</span>.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget
|
||||
needs to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-POINTER-MOTION-MASK:CAPS"><span class="type">GDK_POINTER_MOTION_MASK</span></a> mask.</p>
|
||||
needs to enable the <span class="type">GDK_POINTER_MOTION_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-motion-notify-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -17547,7 +17547,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
the <em class="parameter"><code>widget</code></em>
|
||||
's window has been changed or deleted.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-PROPERTY-CHANGE-MASK:CAPS"><span class="type">GDK_PROPERTY_CHANGE_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_PROPERTY_CHANGE_MASK</span> mask.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-property-notify-event.parameters"></a><h4>Parameters</h4>
|
||||
<div class="informaltable"><table class="informaltable" width="100%" border="0">
|
||||
@ -17591,7 +17591,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
<a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEvent-struct"><span class="type">GdkEvent</span></a> *event,
|
||||
<span class="type">gpointer</span> user_data)</pre>
|
||||
<p>To receive this signal the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-PROXIMITY-IN-MASK:CAPS"><span class="type">GDK_PROXIMITY_IN_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_PROXIMITY_IN_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-proximity-in-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -17636,7 +17636,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
<a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GdkEvent-struct"><span class="type">GdkEvent</span></a> *event,
|
||||
<span class="type">gpointer</span> user_data)</pre>
|
||||
<p>To receive this signal the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-PROXIMITY-OUT-MASK:CAPS"><span class="type">GDK_PROXIMITY_OUT_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_PROXIMITY_OUT_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-proximity-out-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -17838,7 +17838,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
range is pressed. Wheel mice are usually configured to generate
|
||||
button press events for buttons 4 and 5 when the wheel is turned.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-SCROLL-MASK:CAPS"><span class="type">GDK_SCROLL_MASK</span></a> mask.</p>
|
||||
to enable the <span class="type">GDK_SCROLL_MASK</span> mask.</p>
|
||||
<p>This signal will be sent to the grab widget if there is one.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-scroll-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -18398,7 +18398,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
's window is
|
||||
unmapped. A window is unmapped when it becomes invisible on the screen.</p>
|
||||
<p>To receive this signal, the <span class="type">GdkWindow</span> associated to the widget needs
|
||||
to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-STRUCTURE-MASK:CAPS"><span class="type">GDK_STRUCTURE_MASK</span></a> mask. GDK will enable this mask
|
||||
to enable the <span class="type">GDK_STRUCTURE_MASK</span> mask. GDK will enable this mask
|
||||
automatically for all new windows.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-unmap-event.parameters"></a><h4>Parameters</h4>
|
||||
@ -18534,7 +18534,7 @@ user_function (<a class="link" href="GtkWidget.html" title="GtkWidget"><span cla
|
||||
toplevel window associated to the <em class="parameter"><code>widget</code></em>
|
||||
changes.</p>
|
||||
<p>To receive this signal the <span class="type">GdkWindow</span> associated to the widget
|
||||
needs to enable the <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-STRUCTURE-MASK:CAPS"><span class="type">GDK_STRUCTURE_MASK</span></a> mask. GDK will enable
|
||||
needs to enable the <span class="type">GDK_STRUCTURE_MASK</span> mask. GDK will enable
|
||||
this mask automatically for all new windows.</p>
|
||||
<div class="refsect3">
|
||||
<a name="GtkWidget-window-state-event.parameters"></a><h4>Parameters</h4>
|
||||
|
@ -16551,6 +16551,10 @@
|
||||
</dt>
|
||||
<dd></dd>
|
||||
<dt>
|
||||
<a class="link" href="GtkSettings.html#GtkSettings--gtk-cursor-aspect-ratio" title="The “gtk-cursor-aspect-ratio” property">GtkSettings:gtk-cursor-aspect-ratio</a>, object property in <a class="link" href="GtkSettings.html" title="Settings">GtkSettings</a>
|
||||
</dt>
|
||||
<dd></dd>
|
||||
<dt>
|
||||
<a class="link" href="GtkSettings.html#GtkSettings--gtk-cursor-blink" title="The “gtk-cursor-blink” property">GtkSettings:gtk-cursor-blink</a>, object property in <a class="link" href="GtkSettings.html" title="Settings">GtkSettings</a>
|
||||
</dt>
|
||||
<dd></dd>
|
||||
|
@ -229,15 +229,15 @@
|
||||
On some windowing platforms, multitouch devices perform pointer emulation, this works
|
||||
by granting a “pointer emulating” hint to one of the currently interacting touch
|
||||
sequences, which will be reported on every <span class="type">GdkEventTouch</span> event from that sequence. By
|
||||
default, if a widget didn't request touch events by setting <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-TOUCH-MASK:CAPS"><code class="literal">GDK_TOUCH_MASK</code></a> on its
|
||||
default, if a widget didn't request touch events by setting <code class="literal">GDK_TOUCH_MASK</code> on its
|
||||
event mask and didn't override <a class="link" href="GtkWidget.html#GtkWidget-touch-event" title="The “touch-event” signal"><span class="type">“touch-event”</span></a>, GTK+ will transform these
|
||||
“pointer emulating” events into semantically similar <span class="type">GdkEventButton</span> and <span class="type">GdkEventMotion</span>
|
||||
events. Depending on <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-TOUCH-MASK:CAPS"><code class="literal">GDK_TOUCH_MASK</code></a> being in the event mask or not, non-pointer-emulating
|
||||
events. Depending on <code class="literal">GDK_TOUCH_MASK</code> being in the event mask or not, non-pointer-emulating
|
||||
sequences could still trigger gestures or just get filtered out, regardless of the widget
|
||||
not handling those directly.
|
||||
</p>
|
||||
<p>
|
||||
If the widget sets <a href="https://developer.gnome.org/gdk4/gdk4-Events.html#GDK-TOUCH-MASK:CAPS"><code class="literal">GDK_TOUCH_MASK</code></a> on its event mask and doesn't chain up on
|
||||
If the widget sets <code class="literal">GDK_TOUCH_MASK</code> on its event mask and doesn't chain up on
|
||||
<a class="link" href="GtkWidget.html#GtkWidget-touch-event" title="The “touch-event” signal"><span class="type">“touch-event”</span></a>, only touch events will be received, and no pointer emulation
|
||||
will be performed.
|
||||
</p>
|
||||
|
@ -397,7 +397,7 @@ against at application run time.</p>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="GTK-MICRO-VERSION:CAPS"></a><h3>GTK_MICRO_VERSION</h3>
|
||||
<pre class="programlisting">#define GTK_MICRO_VERSION (20)
|
||||
<pre class="programlisting">#define GTK_MICRO_VERSION (21)
|
||||
</pre>
|
||||
<p>Like <a class="link" href="gtk3-Feature-Test-Macros.html#gtk-get-micro-version" title="gtk_get_micro_version ()"><code class="function">gtk_get_micro_version()</code></a>, but from the headers used at
|
||||
application compile time, rather than from the library linked
|
||||
@ -406,7 +406,7 @@ against at application run time.</p>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="GTK-BINARY-AGE:CAPS"></a><h3>GTK_BINARY_AGE</h3>
|
||||
<pre class="programlisting">#define GTK_BINARY_AGE (2420)
|
||||
<pre class="programlisting">#define GTK_BINARY_AGE (2421)
|
||||
</pre>
|
||||
<p>Like <a class="link" href="gtk3-Feature-Test-Macros.html#gtk-get-binary-age" title="gtk_get_binary_age ()"><code class="function">gtk_get_binary_age()</code></a>, but from the headers used at
|
||||
application compile time, rather than from the library linked
|
||||
@ -415,7 +415,7 @@ against at application run time.</p>
|
||||
<hr>
|
||||
<div class="refsect2">
|
||||
<a name="GTK-INTERFACE-AGE:CAPS"></a><h3>GTK_INTERFACE_AGE</h3>
|
||||
<pre class="programlisting">#define GTK_INTERFACE_AGE (16)
|
||||
<pre class="programlisting">#define GTK_INTERFACE_AGE (17)
|
||||
</pre>
|
||||
<p>Like <a class="link" href="gtk3-Feature-Test-Macros.html#gtk-get-interface-age" title="gtk_get_interface_age ()"><code class="function">gtk_get_interface_age()</code></a>, but from the headers used at
|
||||
application compile time, rather than from the library linked
|
||||
|
@ -41,7 +41,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="function_type">
|
||||
<span class="returnvalue">GtkFileChooserNative</span> *
|
||||
<a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="returnvalue">GtkFileChooserNative</span></a> *
|
||||
</td>
|
||||
<td class="function_name">
|
||||
<a class="link" href="gtk3-GtkFileChooserNative.html#gtk-file-chooser-native-new" title="gtk_file_chooser_native_new ()">gtk_file_chooser_native_new</a> <span class="c_punctuation">()</span>
|
||||
@ -87,15 +87,15 @@
|
||||
</div>
|
||||
<div class="refsect1">
|
||||
<a name="gtk3-GtkFileChooserNative.description"></a><h2>Description</h2>
|
||||
<p><span class="type">GtkFileChooserNative</span> is an abstraction of a dialog box suitable
|
||||
<p><a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> is an abstraction of a dialog box suitable
|
||||
for use with “File/Open” or “File/Save as” commands. By default, this
|
||||
just uses a <a class="link" href="GtkFileChooserDialog.html" title="GtkFileChooserDialog"><span class="type">GtkFileChooserDialog</span></a> to implement the actual dialog.
|
||||
However, on certain platforms, such as Windows and macOS, the native platform
|
||||
file chooser is used instead. When the application is running in a
|
||||
sandboxed environment without direct filesystem access (such as Flatpak),
|
||||
<span class="type">GtkFileChooserNative</span> may call the proper APIs (portals) to let the user
|
||||
<a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> may call the proper APIs (portals) to let the user
|
||||
choose a file and make it available to the application.</p>
|
||||
<p>While the API of <span class="type">GtkFileChooserNative</span> closely mirrors <a class="link" href="GtkFileChooserDialog.html" title="GtkFileChooserDialog"><span class="type">GtkFileChooserDialog</span></a>, the main
|
||||
<p>While the API of <a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> closely mirrors <a class="link" href="GtkFileChooserDialog.html" title="GtkFileChooserDialog"><span class="type">GtkFileChooserDialog</span></a>, the main
|
||||
difference is that there is no access to any <a class="link" href="GtkWindow.html" title="GtkWindow"><span class="type">GtkWindow</span></a> or <a class="link" href="GtkWidget.html" title="GtkWidget"><span class="type">GtkWidget</span></a> for the dialog.
|
||||
This is required, as there may not be one in the case of a platform native dialog.
|
||||
Showing, hiding and running the dialog is handled by the <span class="type">GtkNativeDialog</span> functions.</p>
|
||||
@ -234,7 +234,7 @@ Showing, hiding and running the dialog is handled by the <span class="type">GtkN
|
||||
</div>
|
||||
<div class="refsect3">
|
||||
<a name="gtkfilechooserdialognative-responses"></a><h4>Response Codes</h4>
|
||||
<p><span class="type">GtkFileChooserNative</span> inherits from <span class="type">GtkNativeDialog</span>, which means it
|
||||
<p><a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> inherits from <span class="type">GtkNativeDialog</span>, which means it
|
||||
will return <a class="link" href="GtkDialog.html#GTK-RESPONSE-ACCEPT:CAPS"><span class="type">GTK_RESPONSE_ACCEPT</span></a> if the user accepted, and
|
||||
<a class="link" href="GtkDialog.html#GTK-RESPONSE-CANCEL:CAPS"><span class="type">GTK_RESPONSE_CANCEL</span></a> if he pressed cancel. It can also return
|
||||
<a class="link" href="GtkDialog.html#GTK-RESPONSE-DELETE-EVENT:CAPS"><span class="type">GTK_RESPONSE_DELETE_EVENT</span></a> if the window was unexpectedly closed.</p>
|
||||
@ -243,7 +243,7 @@ will return <a class="link" href="GtkDialog.html#GTK-RESPONSE-ACCEPT:CAPS"><span
|
||||
<a name="gtkfilechooserdialognative-differences"></a><h4>Differences from <a class="link" href="GtkFileChooserDialog.html" title="GtkFileChooserDialog"><span class="type">GtkFileChooserDialog</span></a>
|
||||
</h4>
|
||||
<p>There are a few things in the GtkFileChooser API that are not
|
||||
possible to use with <span class="type">GtkFileChooserNative</span>, as such use would
|
||||
possible to use with <a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a>, as such use would
|
||||
prohibit the use of a native dialog.</p>
|
||||
<p>There is no support for the signals that are emitted when the user
|
||||
navigates in the dialog, including:</p>
|
||||
@ -308,13 +308,13 @@ to set the NSSavePanel message instance property.</p></li>
|
||||
<a name="gtk3-GtkFileChooserNative.functions_details"></a><h2>Functions</h2>
|
||||
<div class="refsect2">
|
||||
<a name="gtk-file-chooser-native-new"></a><h3>gtk_file_chooser_native_new ()</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">GtkFileChooserNative</span> *
|
||||
<pre class="programlisting"><a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="returnvalue">GtkFileChooserNative</span></a> *
|
||||
gtk_file_chooser_native_new (<em class="parameter"><code>const <span class="type">gchar</span> *title</code></em>,
|
||||
<em class="parameter"><code><a class="link" href="GtkWindow.html" title="GtkWindow"><span class="type">GtkWindow</span></a> *parent</code></em>,
|
||||
<em class="parameter"><code><a class="link" href="GtkFileChooser.html#GtkFileChooserAction" title="enum GtkFileChooserAction"><span class="type">GtkFileChooserAction</span></a> action</code></em>,
|
||||
<em class="parameter"><code>const <span class="type">gchar</span> *accept_label</code></em>,
|
||||
<em class="parameter"><code>const <span class="type">gchar</span> *cancel_label</code></em>);</pre>
|
||||
<p>Creates a new <span class="type">GtkFileChooserNative</span>.</p>
|
||||
<p>Creates a new <a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a>.</p>
|
||||
<div class="refsect3">
|
||||
<a name="gtk-file-chooser-native-new.parameters"></a><h4>Parameters</h4>
|
||||
<div class="informaltable"><table class="informaltable" width="100%" border="0">
|
||||
@ -354,7 +354,7 @@ gtk_file_chooser_native_new (<em class="parameter"><code>const <span class="type
|
||||
</div>
|
||||
<div class="refsect3">
|
||||
<a name="gtk-file-chooser-native-new.returns"></a><h4>Returns</h4>
|
||||
<p> a new <span class="type">GtkFileChooserNative</span></p>
|
||||
<p> a new <a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a></p>
|
||||
</div>
|
||||
<p class="since">Since: <a class="link" href="api-index-3-20.html#api-index-3.20">3.20</a></p>
|
||||
</div>
|
||||
@ -363,7 +363,7 @@ gtk_file_chooser_native_new (<em class="parameter"><code>const <span class="type
|
||||
<a name="gtk-file-chooser-native-get-accept-label"></a><h3>gtk_file_chooser_native_get_accept_label ()</h3>
|
||||
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||
gtk_file_chooser_native_get_accept_label
|
||||
(<em class="parameter"><code><span class="type">GtkFileChooserNative</span> *self</code></em>);</pre>
|
||||
(<em class="parameter"><code><a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> *self</code></em>);</pre>
|
||||
<p>Retrieves the custom label text for the accept button.</p>
|
||||
<div class="refsect3">
|
||||
<a name="gtk-file-chooser-native-get-accept-label.parameters"></a><h4>Parameters</h4>
|
||||
@ -393,7 +393,7 @@ is owned by GTK+ and should not be modified or freed. </p>
|
||||
<a name="gtk-file-chooser-native-set-accept-label"></a><h3>gtk_file_chooser_native_set_accept_label ()</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
gtk_file_chooser_native_set_accept_label
|
||||
(<em class="parameter"><code><span class="type">GtkFileChooserNative</span> *self</code></em>,
|
||||
(<em class="parameter"><code><a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> *self</code></em>,
|
||||
<em class="parameter"><code>const <span class="type">char</span> *accept_label</code></em>);</pre>
|
||||
<p>Sets the custom label text for the accept button.</p>
|
||||
<p>If characters in <em class="parameter"><code>label</code></em>
|
||||
@ -431,7 +431,7 @@ Pressing Alt and that key activates the button.</p>
|
||||
<a name="gtk-file-chooser-native-get-cancel-label"></a><h3>gtk_file_chooser_native_get_cancel_label ()</h3>
|
||||
<pre class="programlisting">const <span class="returnvalue">char</span> *
|
||||
gtk_file_chooser_native_get_cancel_label
|
||||
(<em class="parameter"><code><span class="type">GtkFileChooserNative</span> *self</code></em>);</pre>
|
||||
(<em class="parameter"><code><a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> *self</code></em>);</pre>
|
||||
<p>Retrieves the custom label text for the cancel button.</p>
|
||||
<div class="refsect3">
|
||||
<a name="gtk-file-chooser-native-get-cancel-label.parameters"></a><h4>Parameters</h4>
|
||||
@ -461,7 +461,7 @@ is owned by GTK+ and should not be modified or freed. </p>
|
||||
<a name="gtk-file-chooser-native-set-cancel-label"></a><h3>gtk_file_chooser_native_set_cancel_label ()</h3>
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
gtk_file_chooser_native_set_cancel_label
|
||||
(<em class="parameter"><code><span class="type">GtkFileChooserNative</span> *self</code></em>,
|
||||
(<em class="parameter"><code><a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a> *self</code></em>,
|
||||
<em class="parameter"><code>const <span class="type">char</span> *cancel_label</code></em>);</pre>
|
||||
<p>Sets the custom label text for the cancel button.</p>
|
||||
<p>If characters in <em class="parameter"><code>label</code></em>
|
||||
|
@ -163,7 +163,7 @@ supporting platform specific features.</p>
|
||||
need a similar API in order to drive them. The <span class="type">GtkNativeDialog</span>
|
||||
object is an API that allows you to do this. It allows you to set
|
||||
various common properties on the dialog, as well as show and hide
|
||||
it and get a <span class="type">“response”</span> signal when the user finished
|
||||
it and get a <a href="https://developer.gnome.org/gtk4/GtkNativeDialog.html#GtkNativeDialog-response"><span class="type">“response”</span></a> signal when the user finished
|
||||
with the dialog.</p>
|
||||
<p>There is also a <a class="link" href="gtk3-GtkNativeDialog.html#gtk-native-dialog-run" title="gtk_native_dialog_run ()"><code class="function">gtk_native_dialog_run()</code></a> helper that makes it easy
|
||||
to run any native dialog in a modal way with a recursive mainloop,
|
||||
@ -177,7 +177,7 @@ similar to <a class="link" href="GtkDialog.html#gtk-dialog-run" title="gtk_dialo
|
||||
gtk_native_dialog_show (<em class="parameter"><code><span class="type">GtkNativeDialog</span> *self</code></em>);</pre>
|
||||
<p>Shows the dialog on the display, allowing the user to interact with
|
||||
it. When the user accepts the state of the dialog the dialog will
|
||||
be automatically hidden and the <span class="type">“response”</span> signal
|
||||
be automatically hidden and the <a href="https://developer.gnome.org/gtk4/GtkNativeDialog.html#GtkNativeDialog-response"><span class="type">“response”</span></a> signal
|
||||
will be emitted.</p>
|
||||
<p>Multiple calls while the dialog is visible will be ignored.</p>
|
||||
<div class="refsect3">
|
||||
@ -203,7 +203,7 @@ will be emitted.</p>
|
||||
<pre class="programlisting"><span class="returnvalue">void</span>
|
||||
gtk_native_dialog_hide (<em class="parameter"><code><span class="type">GtkNativeDialog</span> *self</code></em>);</pre>
|
||||
<p>Hides the dialog if it is visilbe, aborting any interaction. Once this
|
||||
is called the <span class="type">“response”</span> signal will not be emitted
|
||||
is called the <a href="https://developer.gnome.org/gtk4/GtkNativeDialog.html#GtkNativeDialog-response"><span class="type">“response”</span></a> signal will not be emitted
|
||||
until after the next call to <a class="link" href="gtk3-GtkNativeDialog.html#gtk-native-dialog-show" title="gtk_native_dialog_show ()"><code class="function">gtk_native_dialog_show()</code></a>.</p>
|
||||
<p>If the dialog is not visible this does nothing.</p>
|
||||
<div class="refsect3">
|
||||
@ -477,7 +477,7 @@ or <code class="literal">NULL</code> if no transient parent has been set. </p>
|
||||
gtk_native_dialog_run (<em class="parameter"><code><span class="type">GtkNativeDialog</span> *self</code></em>);</pre>
|
||||
<p>Blocks in a recursive main loop until <em class="parameter"><code>self</code></em>
|
||||
emits the
|
||||
<span class="type">“response”</span> signal. It then returns the response ID
|
||||
<a href="https://developer.gnome.org/gtk4/GtkNativeDialog.html#GtkNativeDialog-response"><span class="type">“response”</span></a> signal. It then returns the response ID
|
||||
from the ::response signal emission.</p>
|
||||
<p>Before entering the recursive main loop, <a class="link" href="gtk3-GtkNativeDialog.html#gtk-native-dialog-run" title="gtk_native_dialog_run ()"><code class="function">gtk_native_dialog_run()</code></a>
|
||||
calls <a class="link" href="gtk3-GtkNativeDialog.html#gtk-native-dialog-show" title="gtk_native_dialog_show ()"><code class="function">gtk_native_dialog_show()</code></a> on the dialog for you.</p>
|
||||
@ -562,7 +562,7 @@ be triggered during a <code class="function">gtk_nautilus_dialog_run()</code> ca
|
||||
</div>
|
||||
<div class="refsect1">
|
||||
<a name="gtk3-GtkNativeDialog.see-also"></a><h2>See Also</h2>
|
||||
<p><span class="type">GtkFileChooserNative</span>, <a class="link" href="GtkDialog.html" title="GtkDialog"><span class="type">GtkDialog</span></a></p>
|
||||
<p><a href="https://developer.gnome.org/gtk4/gtk4-GtkFileChooserNative.html#GtkFileChooserNative"><span class="type">GtkFileChooserNative</span></a>, <a class="link" href="GtkDialog.html" title="GtkDialog"><span class="type">GtkDialog</span></a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
|
@ -6480,6 +6480,7 @@
|
||||
<keyword type="property" name="The “gtk-can-change-accels” property" link="GtkSettings.html#GtkSettings--gtk-can-change-accels"/>
|
||||
<keyword type="property" name="The “gtk-color-palette” property" link="GtkSettings.html#GtkSettings--gtk-color-palette"/>
|
||||
<keyword type="property" name="The “gtk-color-scheme” property" link="GtkSettings.html#GtkSettings--gtk-color-scheme"/>
|
||||
<keyword type="property" name="The “gtk-cursor-aspect-ratio” property" link="GtkSettings.html#GtkSettings--gtk-cursor-aspect-ratio"/>
|
||||
<keyword type="property" name="The “gtk-cursor-blink” property" link="GtkSettings.html#GtkSettings--gtk-cursor-blink"/>
|
||||
<keyword type="property" name="The “gtk-cursor-blink-time” property" link="GtkSettings.html#GtkSettings--gtk-cursor-blink-time"/>
|
||||
<keyword type="property" name="The “gtk-cursor-blink-timeout” property" link="GtkSettings.html#GtkSettings--gtk-cursor-blink-timeout"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<div>
|
||||
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GTK+ 3 Reference Manual</p></th></tr></table></div>
|
||||
<div><p class="releaseinfo">
|
||||
This document is for the GTK+ 3 library, version 3.24.20
|
||||
This document is for the GTK+ 3 library, version 3.24.21
|
||||
.
|
||||
The latest versions can be found online at
|
||||
<a class="ulink" href="https://developer.gnome.org/gtk3/" target="_top">https://developer.gnome.org/gtk3/</a>.
|
||||
|
@ -61,18 +61,6 @@ a:hover
|
||||
color: #729fcf;
|
||||
}
|
||||
|
||||
div.informaltable table
|
||||
{
|
||||
border-collapse: separate;
|
||||
border-spacing: 1em 0.3em;
|
||||
border: none;
|
||||
}
|
||||
|
||||
div.informaltable table td, div.informaltable table th
|
||||
{
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.function_type,
|
||||
.variable_type,
|
||||
.property_type,
|
||||
@ -127,6 +115,7 @@ td p
|
||||
margin: 0.25em;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"],
|
||||
div.table table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
@ -135,6 +124,7 @@ div.table table
|
||||
border: solid 1px #babdb6;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"] td, div.informaltable table th,
|
||||
div.table table td, div.table table th
|
||||
{
|
||||
/* tango:aluminium 3 */
|
||||
@ -143,13 +133,7 @@ div.table table td, div.table table th
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.table table tr.subhead
|
||||
{
|
||||
/* tango:aluminium 2 */
|
||||
background-color: #d3d7cf;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"] th,
|
||||
div.table table th
|
||||
{
|
||||
/* tango:aluminium 2 */
|
||||
|
@ -1 +1 @@
|
||||
3.24.20
|
||||
3.24.21
|
||||
|
@ -15,7 +15,7 @@
|
||||
<div>
|
||||
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GAIL Reference Manual</p></th></tr></table></div>
|
||||
<div><p class="releaseinfo">
|
||||
Version 3.24.20
|
||||
Version 3.24.21
|
||||
|
||||
The latest version of this documentation can be found on-line at
|
||||
<a class="ulink" href="http://developer.gnome.org/gail-libgail-util/unstable/" target="_top">http://developer.gnome.org/gail-libgail-util/unstable/</a>.
|
||||
|
@ -61,18 +61,6 @@ a:hover
|
||||
color: #729fcf;
|
||||
}
|
||||
|
||||
div.informaltable table
|
||||
{
|
||||
border-collapse: separate;
|
||||
border-spacing: 1em 0.3em;
|
||||
border: none;
|
||||
}
|
||||
|
||||
div.informaltable table td, div.informaltable table th
|
||||
{
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.function_type,
|
||||
.variable_type,
|
||||
.property_type,
|
||||
@ -127,6 +115,7 @@ td p
|
||||
margin: 0.25em;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"],
|
||||
div.table table
|
||||
{
|
||||
border-collapse: collapse;
|
||||
@ -135,6 +124,7 @@ div.table table
|
||||
border: solid 1px #babdb6;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"] td, div.informaltable table th,
|
||||
div.table table td, div.table table th
|
||||
{
|
||||
/* tango:aluminium 3 */
|
||||
@ -143,13 +133,7 @@ div.table table td, div.table table th
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div.table table tr.subhead
|
||||
{
|
||||
/* tango:aluminium 2 */
|
||||
background-color: #d3d7cf;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
div.informaltable table[border="1"] th,
|
||||
div.table table th
|
||||
{
|
||||
/* tango:aluminium 2 */
|
||||
|
@ -1 +1 @@
|
||||
3.24.20
|
||||
3.24.21
|
||||
|
@ -790,14 +790,16 @@ static const SECTION union { const guint8 data[6205]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -152,14 +152,16 @@ static const SECTION union { const guint8 data[1097]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -152,14 +152,16 @@ static const SECTION union { const guint8 data[1097]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -208,14 +208,16 @@ static const SECTION union { const guint8 data[1549]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -208,14 +208,16 @@ static const SECTION union { const guint8 data[1549]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -462,14 +462,16 @@ static const SECTION union { const guint8 data[3577]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -562,14 +562,16 @@ static const SECTION union { const guint8 data[4377]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -718,14 +718,16 @@ static const SECTION union { const guint8 data[5621]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -782,14 +782,16 @@ static const SECTION union { const guint8 data[6141]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { exampleapp_resource_data.data, sizeof (exampleapp_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *exampleapp_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *exampleapp_get_resource (void);
|
||||
GResource *exampleapp_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
/*
|
||||
If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
|
||||
destructors, in a sane way, including e.g. on library unload. If not you're on
|
||||
destructors, in a usable way, including e.g. on library unload. If not you're on
|
||||
your own.
|
||||
|
||||
Some compilers need #pragma to handle this, which does not work with macros,
|
||||
|
@ -505,11 +505,15 @@ _gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
|
||||
GString *str;
|
||||
|
||||
gint64 previous_frame_time = 0;
|
||||
gint64 previous_smoothed_frame_time = 0;
|
||||
GdkFrameTimings *previous_timings = gdk_frame_clock_get_timings (clock,
|
||||
timings->frame_counter - 1);
|
||||
|
||||
if (previous_timings != NULL)
|
||||
previous_frame_time = previous_timings->frame_time;
|
||||
{
|
||||
previous_frame_time = previous_timings->frame_time;
|
||||
previous_smoothed_frame_time = previous_timings->smoothed_frame_time;
|
||||
}
|
||||
|
||||
str = g_string_new ("");
|
||||
|
||||
@ -518,6 +522,9 @@ _gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
|
||||
{
|
||||
g_string_append_printf (str, " interval=%-4.1f", (timings->frame_time - previous_frame_time) / 1000.);
|
||||
g_string_append_printf (str, timings->slept_before ? " (sleep)" : " ");
|
||||
g_string_append_printf (str, " smoothed=%4.1f / %-4.1f",
|
||||
(timings->smoothed_frame_time - timings->frame_time) / 1000.,
|
||||
(timings->smoothed_frame_time - previous_smoothed_frame_time) / 1000.);
|
||||
}
|
||||
if (timings->layout_start_time != 0)
|
||||
g_string_append_printf (str, " layout_start=%-4.1f", (timings->layout_start_time - timings->frame_time) / 1000.);
|
||||
@ -525,6 +532,8 @@ _gdk_frame_clock_debug_print_timings (GdkFrameClock *clock,
|
||||
g_string_append_printf (str, " paint_start=%-4.1f", (timings->paint_start_time - timings->frame_time) / 1000.);
|
||||
if (timings->frame_end_time != 0)
|
||||
g_string_append_printf (str, " frame_end=%-4.1f", (timings->frame_end_time - timings->frame_time) / 1000.);
|
||||
if (timings->drawn_time != 0)
|
||||
g_string_append_printf (str, " drawn=%-4.1f", (timings->drawn_time - timings->frame_time) / 1000.);
|
||||
if (timings->presentation_time != 0)
|
||||
g_string_append_printf (str, " present=%-4.1f", (timings->presentation_time - timings->frame_time) / 1000.);
|
||||
if (timings->predicted_presentation_time != 0)
|
||||
@ -566,16 +575,12 @@ gdk_frame_clock_get_refresh_info (GdkFrameClock *frame_clock,
|
||||
gint64 *presentation_time_return)
|
||||
{
|
||||
gint64 frame_counter;
|
||||
gint64 default_refresh_interval = DEFAULT_REFRESH_INTERVAL;
|
||||
|
||||
g_return_if_fail (GDK_IS_FRAME_CLOCK (frame_clock));
|
||||
|
||||
frame_counter = gdk_frame_clock_get_frame_counter (frame_clock);
|
||||
|
||||
if (presentation_time_return)
|
||||
*presentation_time_return = 0;
|
||||
if (refresh_interval_return)
|
||||
*refresh_interval_return = DEFAULT_REFRESH_INTERVAL;
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
GdkFrameTimings *timings = gdk_frame_clock_get_timings (frame_clock, frame_counter);
|
||||
@ -583,19 +588,21 @@ gdk_frame_clock_get_refresh_info (GdkFrameClock *frame_clock,
|
||||
gint64 refresh_interval;
|
||||
|
||||
if (timings == NULL)
|
||||
return;
|
||||
break;
|
||||
|
||||
refresh_interval = timings->refresh_interval;
|
||||
presentation_time = timings->presentation_time;
|
||||
|
||||
if (refresh_interval == 0)
|
||||
refresh_interval = default_refresh_interval;
|
||||
else
|
||||
default_refresh_interval = refresh_interval;
|
||||
|
||||
if (presentation_time != 0)
|
||||
{
|
||||
if (presentation_time > base_time - MAX_HISTORY_AGE &&
|
||||
presentation_time_return)
|
||||
{
|
||||
if (refresh_interval == 0)
|
||||
refresh_interval = DEFAULT_REFRESH_INTERVAL;
|
||||
|
||||
if (refresh_interval_return)
|
||||
*refresh_interval_return = refresh_interval;
|
||||
|
||||
@ -604,13 +611,20 @@ gdk_frame_clock_get_refresh_info (GdkFrameClock *frame_clock,
|
||||
|
||||
if (presentation_time_return)
|
||||
*presentation_time_return = presentation_time;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
frame_counter--;
|
||||
}
|
||||
|
||||
if (presentation_time_return)
|
||||
*presentation_time_return = 0;
|
||||
if (refresh_interval_return)
|
||||
*refresh_interval_return = default_refresh_interval;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -36,10 +36,25 @@
|
||||
|
||||
#define FRAME_INTERVAL 16667 /* microseconds */
|
||||
|
||||
typedef enum {
|
||||
SMOOTH_PHASE_STATE_VALID = 0, /* explicit, since we count on zero-init */
|
||||
SMOOTH_PHASE_STATE_AWAIT_FIRST,
|
||||
SMOOTH_PHASE_STATE_AWAIT_DRAWN,
|
||||
} SmoothDeltaState;
|
||||
|
||||
struct _GdkFrameClockIdlePrivate
|
||||
{
|
||||
gint64 frame_time;
|
||||
gint64 min_next_frame_time;
|
||||
gint64 frame_time; /* The exact time we last ran the clock cycle, or 0 if never */
|
||||
gint64 smoothed_frame_time_base; /* A grid-aligned version of frame_time (grid size == refresh period), never more than half a grid from frame_time */
|
||||
gint64 smoothed_frame_time_period; /* The grid size that smoothed_frame_time_base is aligned to */
|
||||
gint64 smoothed_frame_time_reported; /* Ensures we are always monotonic */
|
||||
gint64 smoothed_frame_time_phase; /* The offset of the first reported frame time, in the current animation sequence, from the preceding vsync */
|
||||
gint64 min_next_frame_time; /* We're not synced to vblank, so wait at least until this before next cycle to avoid busy looping */
|
||||
SmoothDeltaState smooth_phase_state; /* The state of smoothed_frame_time_phase - is it valid, awaiting vsync etc. Thanks to zero-init, the initial value
|
||||
of smoothed_frame_time_phase is `0`. This is valid, since we didn't get a "frame drawn" event yet. Accordingly,
|
||||
the initial value of smooth_phase_state is SMOOTH_PHASE_STATE_VALID. See the comment in gdk_frame_clock_paint_idle()
|
||||
for details. */
|
||||
|
||||
gint64 sleep_serial;
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
gint64 freeze_time;
|
||||
@ -54,6 +69,7 @@ struct _GdkFrameClockIdlePrivate
|
||||
GdkFrameClockPhase phase;
|
||||
|
||||
guint in_paint_idle : 1;
|
||||
guint paint_is_thaw : 1;
|
||||
#ifdef G_OS_WIN32
|
||||
guint begin_period : 1;
|
||||
#endif
|
||||
@ -124,8 +140,8 @@ gdk_frame_clock_idle_init (GdkFrameClockIdle *frame_clock_idle)
|
||||
frame_clock_idle->priv = priv =
|
||||
gdk_frame_clock_idle_get_instance_private (frame_clock_idle);
|
||||
|
||||
priv->frame_time = g_get_monotonic_time (); /* more sane than zero */
|
||||
priv->freeze_count = 0;
|
||||
priv->smoothed_frame_time_period = FRAME_INTERVAL;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -156,44 +172,107 @@ gdk_frame_clock_idle_dispose (GObject *object)
|
||||
G_OBJECT_CLASS (gdk_frame_clock_idle_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
/* Note: This is never called on first frame, so
|
||||
* smoothed_frame_time_base != 0 and we have a valid frame_interval. */
|
||||
static gint64
|
||||
compute_frame_time (GdkFrameClockIdle *idle)
|
||||
compute_smooth_frame_time (GdkFrameClock *clock,
|
||||
gint64 new_frame_time,
|
||||
gboolean new_frame_time_is_vsync_related,
|
||||
gint64 smoothed_frame_time_base,
|
||||
gint64 frame_interval)
|
||||
{
|
||||
GdkFrameClockIdlePrivate *priv = idle->priv;
|
||||
gint64 computed_frame_time;
|
||||
GdkFrameClockIdlePrivate *priv = GDK_FRAME_CLOCK_IDLE (clock)->priv;
|
||||
int frames_passed;
|
||||
gint64 new_smoothed_time;
|
||||
gint64 current_error;
|
||||
gint64 correction_magnitude;
|
||||
|
||||
computed_frame_time = g_get_monotonic_time ();
|
||||
/* Consecutive frame, assume it is an integer number of frames later, so round to nearest such */
|
||||
/* NOTE: This is >= 0, because smoothed_frame_time_base is < frame_interval/2 from old_frame_time
|
||||
* and new_frame_time >= old_frame_time. */
|
||||
frames_passed = (new_frame_time - smoothed_frame_time_base + frame_interval / 2) / frame_interval;
|
||||
|
||||
/* ensure monotonicity of frame time */
|
||||
if (computed_frame_time <= priv->frame_time)
|
||||
computed_frame_time = priv->frame_time + 1;
|
||||
/* We use an approximately whole number of frames in the future from
|
||||
* last smoothed frame time. This way we avoid minor jitter in the
|
||||
* frame times making the animation speed uneven, but still animate
|
||||
* evenly in case of whole frame skips. */
|
||||
new_smoothed_time = smoothed_frame_time_base + frames_passed * frame_interval;
|
||||
|
||||
return computed_frame_time;
|
||||
/* However, sometimes the smoothed time is too much off from the
|
||||
* real time. For example, if the first frame clock cycle happened
|
||||
* not due to a frame rendering but an input event, then
|
||||
* new_frame_time could happen to be near the middle between two
|
||||
* frames. If that happens and we then start regularly animating at
|
||||
* the refresh_rate, then the jitter in the real time may cause us
|
||||
* to randomly sometimes round up, and sometimes down.
|
||||
*
|
||||
* To combat this we converge the smooth time towards the real time
|
||||
* in a way that is slow when they are near and fast when they are
|
||||
* far from each other.
|
||||
*
|
||||
* This is done by using the square of the error as the correction
|
||||
* magnitude. I.e. if the error is 0.5 frame, we correct by
|
||||
* 0.5*0.5=0.25 frame, if the error is 0.25 we correct by 0.125, if
|
||||
* the error is 0.1, frame we correct by 0.01 frame, etc.
|
||||
*
|
||||
* The actual computation is:
|
||||
* (current_error/frame_interval)*(current_error/frame_interval)*frame_interval
|
||||
* But this can be simplified as below.
|
||||
*
|
||||
* Note: We only do this correction if the new frame is caused by a
|
||||
* thaw of the frame clock, so that we know the time is actually
|
||||
* related to the physical vblank. For frameclock cycles triggered
|
||||
* by other events we always step up in whole frames from the last
|
||||
* reported time.
|
||||
*/
|
||||
if (new_frame_time_is_vsync_related)
|
||||
{
|
||||
current_error = new_smoothed_time - new_frame_time;
|
||||
correction_magnitude = current_error * current_error / frame_interval; /* Note, this is always > 0 due to the square */
|
||||
if (current_error > 0)
|
||||
new_smoothed_time -= correction_magnitude;
|
||||
else
|
||||
new_smoothed_time += correction_magnitude;
|
||||
}
|
||||
|
||||
/* Ensure we're always monotonic */
|
||||
if (new_smoothed_time <= priv->smoothed_frame_time_reported)
|
||||
new_smoothed_time = priv->smoothed_frame_time_reported;
|
||||
|
||||
return new_smoothed_time;
|
||||
}
|
||||
|
||||
static gint64
|
||||
gdk_frame_clock_idle_get_frame_time (GdkFrameClock *clock)
|
||||
{
|
||||
GdkFrameClockIdlePrivate *priv = GDK_FRAME_CLOCK_IDLE (clock)->priv;
|
||||
gint64 computed_frame_time;
|
||||
gint64 now;
|
||||
gint64 new_smoothed_time;
|
||||
|
||||
/* can't change frame time during a paint */
|
||||
if (priv->phase != GDK_FRAME_CLOCK_PHASE_NONE &&
|
||||
priv->phase != GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS)
|
||||
return priv->frame_time;
|
||||
priv->phase != GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS &&
|
||||
(priv->phase != GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT || priv->in_paint_idle))
|
||||
return priv->smoothed_frame_time_base;
|
||||
|
||||
/* Outside a paint, pick something close to "now" */
|
||||
computed_frame_time = compute_frame_time (GDK_FRAME_CLOCK_IDLE (clock));
|
||||
/* Outside a paint, pick something smoothed close to now */
|
||||
now = g_get_monotonic_time ();
|
||||
|
||||
/* 16ms is 60fps. We only update frame time that often because we'd
|
||||
* like to try to keep animations on the same start times.
|
||||
* get_frame_time() would normally be used outside of a paint to
|
||||
* record an animation start time for example.
|
||||
*/
|
||||
if ((computed_frame_time - priv->frame_time) > FRAME_INTERVAL)
|
||||
priv->frame_time = computed_frame_time;
|
||||
/* First time frame, just return something */
|
||||
if (priv->smoothed_frame_time_base == 0)
|
||||
{
|
||||
priv->smoothed_frame_time_reported = now;
|
||||
return now;
|
||||
}
|
||||
|
||||
return priv->frame_time;
|
||||
/* Since time is monotonic this is <= what we will pick for the next cycle, but
|
||||
more likely than not it will be equal if we're doing a constant animation. */
|
||||
new_smoothed_time = compute_smooth_frame_time (clock, now, FALSE,
|
||||
priv->smoothed_frame_time_base,
|
||||
priv->smoothed_frame_time_period);
|
||||
|
||||
priv->smoothed_frame_time_reported = new_smoothed_time;
|
||||
return new_smoothed_time;
|
||||
}
|
||||
|
||||
#define RUN_FLUSH_IDLE(priv) \
|
||||
@ -211,7 +290,8 @@ gdk_frame_clock_idle_get_frame_time (GdkFrameClock *clock)
|
||||
(priv)->updating_count > 0))
|
||||
|
||||
static void
|
||||
maybe_start_idle (GdkFrameClockIdle *clock_idle)
|
||||
maybe_start_idle (GdkFrameClockIdle *clock_idle,
|
||||
gboolean caused_by_thaw)
|
||||
{
|
||||
GdkFrameClockIdlePrivate *priv = clock_idle->priv;
|
||||
|
||||
@ -221,7 +301,7 @@ maybe_start_idle (GdkFrameClockIdle *clock_idle)
|
||||
|
||||
if (priv->min_next_frame_time != 0)
|
||||
{
|
||||
gint64 now = compute_frame_time (clock_idle);
|
||||
gint64 now = g_get_monotonic_time ();
|
||||
gint64 min_interval_us = MAX (priv->min_next_frame_time, now) - now;
|
||||
min_interval = (min_interval_us + 500) / 1000;
|
||||
}
|
||||
@ -239,6 +319,7 @@ maybe_start_idle (GdkFrameClockIdle *clock_idle)
|
||||
if (!priv->in_paint_idle &&
|
||||
priv->paint_idle_id == 0 && RUN_PAINT_IDLE (priv))
|
||||
{
|
||||
priv->paint_is_thaw = caused_by_thaw;
|
||||
priv->paint_idle_id = gdk_threads_add_timeout_full (GDK_PRIORITY_REDRAW,
|
||||
min_interval,
|
||||
gdk_frame_clock_paint_idle,
|
||||
@ -267,23 +348,6 @@ maybe_stop_idle (GdkFrameClockIdle *clock_idle)
|
||||
}
|
||||
}
|
||||
|
||||
static gint64
|
||||
compute_min_next_frame_time (GdkFrameClockIdle *clock_idle,
|
||||
gint64 last_frame_time)
|
||||
{
|
||||
gint64 presentation_time;
|
||||
gint64 refresh_interval;
|
||||
|
||||
gdk_frame_clock_get_refresh_info (GDK_FRAME_CLOCK (clock_idle),
|
||||
last_frame_time,
|
||||
&refresh_interval, &presentation_time);
|
||||
|
||||
if (presentation_time == 0)
|
||||
return last_frame_time + refresh_interval;
|
||||
else
|
||||
return presentation_time + refresh_interval / 2;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gdk_frame_clock_flush_idle (void *data)
|
||||
{
|
||||
@ -310,6 +374,25 @@ gdk_frame_clock_flush_idle (void *data)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the positive remainder.
|
||||
*
|
||||
* As an example, lets consider (-5) % 16:
|
||||
*
|
||||
* (-5) % 16 = (0 * 16) + (-5) = -5
|
||||
*
|
||||
* If we only want positive remainders, we can instead calculate
|
||||
*
|
||||
* (-5) % 16 = (1 * 16) + (-5) = 11
|
||||
*
|
||||
* The built-in `%` operator returns the former, positive_modulo() returns the latter.
|
||||
*/
|
||||
static int
|
||||
positive_modulo (int i, int n)
|
||||
{
|
||||
return (i % n + n) % n;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gdk_frame_clock_paint_idle (void *data)
|
||||
{
|
||||
@ -343,39 +426,103 @@ gdk_frame_clock_paint_idle (void *data)
|
||||
if (priv->freeze_count == 0)
|
||||
{
|
||||
gint64 frame_interval = FRAME_INTERVAL;
|
||||
gint64 reset_frame_time;
|
||||
gint64 smoothest_frame_time;
|
||||
gint64 frame_time_error;
|
||||
GdkFrameTimings *prev_timings =
|
||||
gdk_frame_clock_get_current_timings (clock);
|
||||
GdkFrameTimings *prev_timings = gdk_frame_clock_get_current_timings (clock);
|
||||
|
||||
if (prev_timings && prev_timings->refresh_interval)
|
||||
frame_interval = prev_timings->refresh_interval;
|
||||
|
||||
/* We are likely not getting precisely even callbacks in real
|
||||
* time, particularly if the event loop is busy.
|
||||
* This is a documented limitation in the precision of
|
||||
* gdk_threads_add_timeout_full and g_timeout_add_full.
|
||||
priv->frame_time = g_get_monotonic_time ();
|
||||
|
||||
/*
|
||||
* The first clock cycle of an animation might have been triggered by some external event. An external
|
||||
* event can be an input event, an expired timer, data arriving over the network etc. This can happen at
|
||||
* any time, so the cycle could have been scheduled at some random time rather then immediately after a
|
||||
* frame completion. The offset between the start of the first animation cycle and the preceding vsync is
|
||||
* called the "phase" of the clock cycle start time (not to be confused with the phase of the frame
|
||||
* clock).
|
||||
*
|
||||
* In order to avoid this imprecision from compounding between
|
||||
* frames and affecting visual smoothness, we correct frame_time
|
||||
* to more precisely match the even refresh interval of the
|
||||
* physical display. This also means we proactively avoid (most)
|
||||
* missed frames before they occur.
|
||||
* In this first clock cycle, the "smooth" frame time is simply the time when the cycle was started. This
|
||||
* could be followed by several cycles which are not vsync-related. As long as we don't get a "frame
|
||||
* drawn" signal from the compositor, the clock cycles will occur every about frame_interval. Once we do
|
||||
* get a "frame drawn" signal, from this point on the frame clock cycles will start shortly after the
|
||||
* corresponding vsync signals, again every about frame_interval. The first vsync-related clock cycle
|
||||
* might occur less than a refresh interval away from the last non-vsync-related cycle. See the diagram
|
||||
* below for details. So while the cadence stays the same - a frame clock cycle every about frame_interval
|
||||
* - the phase of the cycles start time has changed.
|
||||
*
|
||||
* Since we might have already reported the frame time to the application in the previous clock cycles, we
|
||||
* have to adjust future reported frame times. We want the first vsync-related smooth time to be separated
|
||||
* by exactly 1 frame_interval from the previous one, in order to maintain the regularity of the reported
|
||||
* frame times. To achieve that, from this point on we add the phase of the first clock cycle start time to
|
||||
* the smooth time. In order to compute that phase, accounting for possible skipped frames (e.g. due to
|
||||
* compositor stalls), we want the following to be true:
|
||||
*
|
||||
* first_vsync_smooth_time = last_non_vsync_smooth_time + frame_interval * (1 + frames_skipped)
|
||||
*
|
||||
* We can assign the following known/desired values to the above equation:
|
||||
*
|
||||
* last_non_vsync_smooth_time = smoothed_frame_time_base
|
||||
* first_vsync_smooth_time = frame_time + smoothed_frame_time_phase
|
||||
*
|
||||
* That leads us to the following, from which we can extract smoothed_frame_time_phase:
|
||||
*
|
||||
* frame_time + smoothed_frame_time_phase = smoothed_frame_time_base +
|
||||
* frame_interval * (1 + frames_skipped)
|
||||
*
|
||||
* In the following diagram, '|' mark a vsync, '*' mark the start of a clock cycle, '+' is the adjusted
|
||||
* frame time, '!' marks the reception of "frame drawn" events from the compositor. Note that the clock
|
||||
* cycle cadence changed after the first vsync-related cycle. This cadence is kept even if we don't
|
||||
* receive a 'frame drawn' signal in a subsequent frame, since then we schedule the clock at intervals of
|
||||
* refresh_interval.
|
||||
*
|
||||
* vsync | | | | | |...
|
||||
* frame drawn | | |! |! | |...
|
||||
* cycle start | * | * |* |* |* |...
|
||||
* adjusted times | * | * | + | + | + |...
|
||||
* phase ^------^
|
||||
*/
|
||||
smoothest_frame_time = priv->frame_time + frame_interval;
|
||||
reset_frame_time = compute_frame_time (clock_idle);
|
||||
frame_time_error = ABS (reset_frame_time - smoothest_frame_time);
|
||||
if (frame_time_error >= frame_interval)
|
||||
priv->frame_time = reset_frame_time;
|
||||
if (priv->smooth_phase_state == SMOOTH_PHASE_STATE_AWAIT_FIRST)
|
||||
{
|
||||
/* First animation cycle - usually unrelated to vsync */
|
||||
priv->smoothed_frame_time_base = 0;
|
||||
priv->smoothed_frame_time_phase = 0;
|
||||
priv->smooth_phase_state = SMOOTH_PHASE_STATE_AWAIT_DRAWN;
|
||||
}
|
||||
else if (priv->smooth_phase_state == SMOOTH_PHASE_STATE_AWAIT_DRAWN &&
|
||||
priv->paint_is_thaw)
|
||||
{
|
||||
/* First vsync-related animation cycle, we can now compute the phase. We want the phase to satisfy
|
||||
0 <= phase < frame_interval */
|
||||
priv->smoothed_frame_time_phase =
|
||||
positive_modulo (priv->smoothed_frame_time_base - priv->frame_time,
|
||||
frame_interval);
|
||||
priv->smooth_phase_state = SMOOTH_PHASE_STATE_VALID;
|
||||
}
|
||||
|
||||
if (priv->smoothed_frame_time_base == 0)
|
||||
{
|
||||
/* First frame ever, or first cycle in a new animation sequence. Ensure monotonicity */
|
||||
priv->smoothed_frame_time_base = MAX (priv->frame_time, priv->smoothed_frame_time_reported);
|
||||
}
|
||||
else
|
||||
priv->frame_time = smoothest_frame_time;
|
||||
{
|
||||
/* compute_smooth_frame_time() ensures monotonicity */
|
||||
priv->smoothed_frame_time_base =
|
||||
compute_smooth_frame_time (clock, priv->frame_time + priv->smoothed_frame_time_phase,
|
||||
priv->paint_is_thaw,
|
||||
priv->smoothed_frame_time_base,
|
||||
priv->smoothed_frame_time_period);
|
||||
}
|
||||
|
||||
priv->smoothed_frame_time_period = frame_interval;
|
||||
priv->smoothed_frame_time_reported = priv->smoothed_frame_time_base;
|
||||
|
||||
_gdk_frame_clock_begin_frame (clock);
|
||||
/* Note "current" is different now so timings != prev_timings */
|
||||
timings = gdk_frame_clock_get_current_timings (clock);
|
||||
|
||||
timings->frame_time = priv->frame_time;
|
||||
timings->smoothed_frame_time = priv->smoothed_frame_time_base;
|
||||
timings->slept_before = priv->sleep_serial != get_sleep_serial ();
|
||||
|
||||
priv->phase = GDK_FRAME_CLOCK_PHASE_BEFORE_PAINT;
|
||||
@ -496,9 +643,20 @@ gdk_frame_clock_paint_idle (void *data)
|
||||
*/
|
||||
if (priv->freeze_count == 0)
|
||||
{
|
||||
priv->min_next_frame_time = compute_min_next_frame_time (clock_idle,
|
||||
priv->frame_time);
|
||||
maybe_start_idle (clock_idle);
|
||||
/*
|
||||
* If we don't receive "frame drawn" events, smooth_cycle_start will simply be advanced in constant increments of
|
||||
* the refresh interval. That way we get absolute target times for the next cycles, which should prevent skewing
|
||||
* in the scheduling of the frame clock.
|
||||
*
|
||||
* Once we do receive "frame drawn" events, smooth_cycle_start will track the vsync, and do so in a more stable
|
||||
* way compared to frame_time. If we then no longer receive "frame drawn" events, smooth_cycle_start will again be
|
||||
* simply advanced in increments of the refresh interval, but this time we are in sync with the vsync. If we start
|
||||
* receiving "frame drawn" events shortly after loosing them, then we should still be in sync.
|
||||
*/
|
||||
gint64 smooth_cycle_start = priv->smoothed_frame_time_base - priv->smoothed_frame_time_phase;
|
||||
priv->min_next_frame_time = smooth_cycle_start + priv->smoothed_frame_time_period;
|
||||
|
||||
maybe_start_idle (clock_idle, FALSE);
|
||||
}
|
||||
|
||||
if (priv->freeze_count == 0)
|
||||
@ -515,7 +673,7 @@ gdk_frame_clock_idle_request_phase (GdkFrameClock *clock,
|
||||
GdkFrameClockIdlePrivate *priv = clock_idle->priv;
|
||||
|
||||
priv->requested |= phase;
|
||||
maybe_start_idle (clock_idle);
|
||||
maybe_start_idle (clock_idle, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -533,8 +691,13 @@ gdk_frame_clock_idle_begin_updating (GdkFrameClock *clock)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (priv->updating_count == 0)
|
||||
{
|
||||
priv->smooth_phase_state = SMOOTH_PHASE_STATE_AWAIT_FIRST;
|
||||
}
|
||||
|
||||
priv->updating_count++;
|
||||
maybe_start_idle (clock_idle);
|
||||
maybe_start_idle (clock_idle, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -548,6 +711,11 @@ gdk_frame_clock_idle_end_updating (GdkFrameClock *clock)
|
||||
priv->updating_count--;
|
||||
maybe_stop_idle (clock_idle);
|
||||
|
||||
if (priv->updating_count == 0)
|
||||
{
|
||||
priv->smooth_phase_state = SMOOTH_PHASE_STATE_VALID;
|
||||
}
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
if (priv->updating_count == 0 && priv->begin_period)
|
||||
{
|
||||
@ -586,7 +754,7 @@ gdk_frame_clock_idle_thaw (GdkFrameClock *clock)
|
||||
priv->freeze_count--;
|
||||
if (priv->freeze_count == 0)
|
||||
{
|
||||
maybe_start_idle (clock_idle);
|
||||
maybe_start_idle (clock_idle, TRUE);
|
||||
/* If nothing is requested so we didn't start an idle, we need
|
||||
* to skip to the end of the state chain, since the idle won't
|
||||
* run and do it for us.
|
||||
|
@ -89,6 +89,7 @@ struct _GdkFrameTimings
|
||||
gint64 frame_counter;
|
||||
guint64 cookie;
|
||||
gint64 frame_time;
|
||||
gint64 smoothed_frame_time;
|
||||
gint64 drawn_time;
|
||||
gint64 presentation_time;
|
||||
gint64 refresh_interval;
|
||||
|
@ -324,19 +324,23 @@ static const SECTION union { const guint8 data[2473]; const double alignment; vo
|
||||
#endif /* !_MSC_VER */
|
||||
|
||||
static GStaticResource static_resource = { _gdk_resource_data.data, sizeof (_gdk_resource_data.data) - 1 /* nul terminator */, NULL, NULL, NULL };
|
||||
extern GResource *_gdk_get_resource (void);
|
||||
|
||||
G_MODULE_EXPORT
|
||||
GResource *_gdk_get_resource (void);
|
||||
GResource *_gdk_get_resource (void)
|
||||
{
|
||||
return g_static_resource_get_resource (&static_resource);
|
||||
}
|
||||
|
||||
extern void _gdk_unregister_resource (void);
|
||||
G_MODULE_EXPORT
|
||||
void _gdk_unregister_resource (void);
|
||||
void _gdk_unregister_resource (void)
|
||||
{
|
||||
g_static_resource_fini (&static_resource);
|
||||
}
|
||||
|
||||
extern void _gdk_register_resource (void);
|
||||
G_MODULE_EXPORT
|
||||
void _gdk_register_resource (void);
|
||||
void _gdk_register_resource (void)
|
||||
{
|
||||
g_static_resource_init (&static_resource);
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
#define GDK_MAJOR_VERSION (3)
|
||||
#define GDK_MINOR_VERSION (24)
|
||||
#define GDK_MICRO_VERSION (20)
|
||||
#define GDK_MICRO_VERSION (21)
|
||||
|
||||
#ifndef _GDK_EXTERN
|
||||
#define _GDK_EXTERN extern
|
||||
|
@ -31,6 +31,10 @@
|
||||
struct _GdkQuartzDeviceCore
|
||||
{
|
||||
GdkDevice parent_instance;
|
||||
|
||||
gboolean active;
|
||||
NSUInteger device_id;
|
||||
unsigned long long unique_id;
|
||||
};
|
||||
|
||||
struct _GdkQuartzDeviceCoreClass
|
||||
@ -364,3 +368,36 @@ gdk_quartz_device_core_select_window_events (GdkDevice *device,
|
||||
{
|
||||
/* The mask is set in the common code. */
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_quartz_device_core_set_active (GdkDevice *device,
|
||||
gboolean active,
|
||||
NSUInteger device_id)
|
||||
{
|
||||
GdkQuartzDeviceCore *self = GDK_QUARTZ_DEVICE_CORE (device);
|
||||
|
||||
self->active = active;
|
||||
self->device_id = device_id;
|
||||
}
|
||||
|
||||
gboolean
|
||||
_gdk_quartz_device_core_is_active (GdkDevice *device,
|
||||
NSUInteger device_id)
|
||||
{
|
||||
GdkQuartzDeviceCore *self = GDK_QUARTZ_DEVICE_CORE (device);
|
||||
|
||||
return (self->active && self->device_id == device_id);
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_quartz_device_core_set_unique (GdkDevice *device,
|
||||
unsigned long long unique_id)
|
||||
{
|
||||
GDK_QUARTZ_DEVICE_CORE (device)->unique_id = unique_id;
|
||||
}
|
||||
|
||||
unsigned long long
|
||||
_gdk_quartz_device_core_get_unique (GdkDevice *device)
|
||||
{
|
||||
return GDK_QUARTZ_DEVICE_CORE (device)->unique_id;
|
||||
}
|
||||
|
@ -27,7 +27,20 @@
|
||||
#include "gdkquartzdevice-core.h"
|
||||
#include "gdkkeysyms.h"
|
||||
#include "gdkprivate-quartz.h"
|
||||
#include "gdkinternal-quartz.h"
|
||||
|
||||
typedef enum
|
||||
{
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < 101200
|
||||
GDK_QUARTZ_POINTER_DEVICE_TYPE_CURSOR = NSCursorPointingDevice,
|
||||
GDK_QUARTZ_POINTER_DEVICE_TYPE_ERASER = NSEraserPointingDevice,
|
||||
GDK_QUARTZ_POINTER_DEVICE_TYPE_PEN = NSPenPointingDevice,
|
||||
#else
|
||||
GDK_QUARTZ_POINTER_DEVICE_TYPE_CURSOR = NSPointingDeviceTypeCursor,
|
||||
GDK_QUARTZ_POINTER_DEVICE_TYPE_ERASER = NSPointingDeviceTypeEraser,
|
||||
GDK_QUARTZ_POINTER_DEVICE_TYPE_PEN = NSPointingDeviceTypePen,
|
||||
#endif
|
||||
} GdkQuartzPointerDeviceType;
|
||||
|
||||
#define HAS_FOCUS(toplevel) \
|
||||
((toplevel)->has_focus || (toplevel)->has_pointer_focus)
|
||||
@ -87,6 +100,7 @@ create_core_keyboard (GdkDeviceManager *device_manager,
|
||||
static void
|
||||
gdk_quartz_device_manager_core_init (GdkQuartzDeviceManagerCore *device_manager)
|
||||
{
|
||||
device_manager->known_tablet_devices = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -99,6 +113,8 @@ gdk_quartz_device_manager_core_finalize (GObject *object)
|
||||
g_object_unref (quartz_device_manager_core->core_pointer);
|
||||
g_object_unref (quartz_device_manager_core->core_keyboard);
|
||||
|
||||
g_list_free_full (quartz_device_manager_core->known_tablet_devices, g_object_unref);
|
||||
|
||||
G_OBJECT_CLASS (gdk_quartz_device_manager_core_parent_class)->finalize (object);
|
||||
}
|
||||
|
||||
@ -127,16 +143,25 @@ static GList *
|
||||
gdk_quartz_device_manager_core_list_devices (GdkDeviceManager *device_manager,
|
||||
GdkDeviceType type)
|
||||
{
|
||||
GdkQuartzDeviceManagerCore *quartz_device_manager_core;
|
||||
GdkQuartzDeviceManagerCore *self;
|
||||
GList *devices = NULL;
|
||||
GList *l;
|
||||
|
||||
self = GDK_QUARTZ_DEVICE_MANAGER_CORE (device_manager);
|
||||
|
||||
if (type == GDK_DEVICE_TYPE_MASTER)
|
||||
{
|
||||
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);
|
||||
devices = g_list_prepend (devices, self->core_keyboard);
|
||||
devices = g_list_prepend (devices, self->core_pointer);
|
||||
}
|
||||
|
||||
for (l = self->known_tablet_devices; l; l = g_list_next (l))
|
||||
{
|
||||
devices = g_list_prepend (devices, GDK_DEVICE (l->data));
|
||||
}
|
||||
|
||||
devices = g_list_reverse (devices);
|
||||
|
||||
return devices;
|
||||
}
|
||||
|
||||
@ -148,3 +173,154 @@ gdk_quartz_device_manager_core_get_client_pointer (GdkDeviceManager *device_mana
|
||||
quartz_device_manager_core = (GdkQuartzDeviceManagerCore *) device_manager;
|
||||
return quartz_device_manager_core->core_pointer;
|
||||
}
|
||||
|
||||
static GdkDevice *
|
||||
create_core_device (GdkDeviceManager *device_manager,
|
||||
const gchar *device_name,
|
||||
GdkInputSource source)
|
||||
{
|
||||
GdkDisplay *display = gdk_device_manager_get_display (device_manager);
|
||||
GdkDevice *device = g_object_new (GDK_TYPE_QUARTZ_DEVICE_CORE,
|
||||
"name", device_name,
|
||||
"type", GDK_DEVICE_TYPE_SLAVE,
|
||||
"input-source", source,
|
||||
"input-mode", GDK_MODE_DISABLED,
|
||||
"has-cursor", FALSE,
|
||||
"display", display,
|
||||
"device-manager", device_manager,
|
||||
NULL);
|
||||
|
||||
_gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_PRESSURE, 0.0, 1.0, 0.001);
|
||||
_gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_XTILT, -1.0, 1.0, 0.001);
|
||||
_gdk_device_add_axis (device, GDK_NONE, GDK_AXIS_YTILT, -1.0, 1.0, 0.001);
|
||||
|
||||
return device;
|
||||
}
|
||||
|
||||
void
|
||||
_gdk_quartz_device_manager_register_device_for_ns_event (GdkDeviceManager *device_manager,
|
||||
NSEvent *nsevent)
|
||||
{
|
||||
GdkQuartzDeviceManagerCore *self = GDK_QUARTZ_DEVICE_MANAGER_CORE (device_manager);
|
||||
GList *l = NULL;
|
||||
GdkInputSource input_source = GDK_SOURCE_MOUSE;
|
||||
GdkDevice *device = NULL;
|
||||
|
||||
/* Only handle device updates for proximity events */
|
||||
if ([nsevent type] != GDK_QUARTZ_EVENT_TABLET_PROXIMITY &&
|
||||
[nsevent subtype] != GDK_QUARTZ_EVENT_SUBTYPE_TABLET_PROXIMITY)
|
||||
return;
|
||||
|
||||
if ([nsevent pointingDeviceType] == GDK_QUARTZ_POINTER_DEVICE_TYPE_PEN)
|
||||
input_source = GDK_SOURCE_PEN;
|
||||
else if ([nsevent pointingDeviceType] == GDK_QUARTZ_POINTER_DEVICE_TYPE_CURSOR)
|
||||
input_source = GDK_SOURCE_CURSOR;
|
||||
else if ([nsevent pointingDeviceType] == GDK_QUARTZ_POINTER_DEVICE_TYPE_ERASER)
|
||||
input_source = GDK_SOURCE_ERASER;
|
||||
|
||||
for (l = self->known_tablet_devices; l; l = g_list_next (l))
|
||||
{
|
||||
GdkDevice *device_to_check = GDK_DEVICE (l->data);
|
||||
|
||||
if (input_source == gdk_device_get_source (device_to_check) &&
|
||||
[nsevent uniqueID] == _gdk_quartz_device_core_get_unique (device_to_check))
|
||||
{
|
||||
device = device_to_check;
|
||||
if ([nsevent isEnteringProximity])
|
||||
{
|
||||
if (!_gdk_quartz_device_core_is_active (device, [nsevent deviceID]))
|
||||
self->num_active_devices++;
|
||||
|
||||
_gdk_quartz_device_core_set_active (device, TRUE, [nsevent deviceID]);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_gdk_quartz_device_core_is_active (device, [nsevent deviceID]))
|
||||
self->num_active_devices--;
|
||||
|
||||
_gdk_quartz_device_core_set_active (device, FALSE, [nsevent deviceID]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If we haven't seen this device before, add it */
|
||||
if (!device)
|
||||
{
|
||||
GdkSeat *seat;
|
||||
|
||||
switch (input_source)
|
||||
{
|
||||
case GDK_SOURCE_PEN:
|
||||
device = create_core_device (device_manager,
|
||||
"Quartz Pen",
|
||||
GDK_SOURCE_PEN);
|
||||
break;
|
||||
case GDK_SOURCE_CURSOR:
|
||||
device = create_core_device (device_manager,
|
||||
"Quartz Cursor",
|
||||
GDK_SOURCE_CURSOR);
|
||||
break;
|
||||
case GDK_SOURCE_ERASER:
|
||||
device = create_core_device (device_manager,
|
||||
"Quartz Eraser",
|
||||
GDK_SOURCE_ERASER);
|
||||
break;
|
||||
default:
|
||||
g_warning ("GDK Quarz unknown input source: %i", input_source);
|
||||
break;
|
||||
}
|
||||
|
||||
_gdk_device_set_associated_device (GDK_DEVICE (device), self->core_pointer);
|
||||
_gdk_device_add_slave (self->core_pointer, GDK_DEVICE (device));
|
||||
|
||||
seat = gdk_device_get_seat (self->core_pointer);
|
||||
gdk_seat_default_add_slave (GDK_SEAT_DEFAULT (seat), device);
|
||||
|
||||
_gdk_quartz_device_core_set_unique (device, [nsevent uniqueID]);
|
||||
_gdk_quartz_device_core_set_active (device, TRUE, [nsevent deviceID]);
|
||||
|
||||
self->known_tablet_devices = g_list_append (self->known_tablet_devices,
|
||||
device);
|
||||
|
||||
if ([nsevent isEnteringProximity])
|
||||
{
|
||||
if (!_gdk_quartz_device_core_is_active (device, [nsevent deviceID]))
|
||||
self->num_active_devices++;
|
||||
_gdk_quartz_device_core_set_active (device, TRUE, [nsevent deviceID]);
|
||||
}
|
||||
}
|
||||
|
||||
if (self->num_active_devices)
|
||||
[NSEvent setMouseCoalescingEnabled: FALSE];
|
||||
else
|
||||
[NSEvent setMouseCoalescingEnabled: TRUE];
|
||||
}
|
||||
|
||||
GdkDevice *
|
||||
_gdk_quartz_device_manager_core_device_for_ns_event (GdkDeviceManager *device_manager,
|
||||
NSEvent *nsevent)
|
||||
{
|
||||
GdkQuartzDeviceManagerCore *self = GDK_QUARTZ_DEVICE_MANAGER_CORE (device_manager);
|
||||
GdkDevice *device = NULL;
|
||||
|
||||
if ([nsevent type] == GDK_QUARTZ_EVENT_TABLET_PROXIMITY ||
|
||||
[nsevent subtype] == GDK_QUARTZ_EVENT_SUBTYPE_TABLET_PROXIMITY ||
|
||||
[nsevent subtype] == GDK_QUARTZ_EVENT_SUBTYPE_TABLET_POINT)
|
||||
{
|
||||
/* Find the device based on deviceID */
|
||||
GList *l = NULL;
|
||||
|
||||
for (l = self->known_tablet_devices; l && !device; l = g_list_next (l))
|
||||
{
|
||||
GdkDevice *device_to_check = GDK_DEVICE (l->data);
|
||||
|
||||
if (_gdk_quartz_device_core_is_active (device_to_check, [nsevent deviceID]))
|
||||
device = device_to_check;
|
||||
}
|
||||
}
|
||||
|
||||
if (!device)
|
||||
device = self->core_pointer;
|
||||
|
||||
return device;
|
||||
}
|
||||
|
@ -23,6 +23,8 @@
|
||||
#include <gdkdevicemanagerprivate.h>
|
||||
#include "gdkquartzdevicemanager-core.h"
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
struct _GdkQuartzDeviceManagerCore
|
||||
@ -30,6 +32,8 @@ struct _GdkQuartzDeviceManagerCore
|
||||
GdkDeviceManager parent_object;
|
||||
GdkDevice *core_pointer;
|
||||
GdkDevice *core_keyboard;
|
||||
GList *known_tablet_devices;
|
||||
guint num_active_devices;
|
||||
};
|
||||
|
||||
struct _GdkQuartzDeviceManagerCoreClass
|
||||
@ -37,6 +41,12 @@ struct _GdkQuartzDeviceManagerCoreClass
|
||||
GdkDeviceManagerClass parent_class;
|
||||
};
|
||||
|
||||
void _gdk_quartz_device_manager_register_device_for_ns_event (GdkDeviceManager *device_manager,
|
||||
NSEvent *nsevent);
|
||||
|
||||
GdkDevice *_gdk_quartz_device_manager_core_device_for_ns_event (GdkDeviceManager *device_manager,
|
||||
NSEvent *ns_event);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GDK_QUARTZ_DEVICE_MANAGER__ */
|
||||
|
@ -42,6 +42,7 @@
|
||||
#define GRIP_WIDTH 15
|
||||
#define GRIP_HEIGHT 15
|
||||
#define GDK_LION_RESIZE 5
|
||||
#define TABLET_AXES 5
|
||||
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060
|
||||
#define NSEventTypeRotate 13
|
||||
@ -173,7 +174,7 @@ gdk_event_apply_filters (NSEvent *nsevent,
|
||||
{
|
||||
GList *tmp_list;
|
||||
GdkFilterReturn result;
|
||||
|
||||
|
||||
tmp_list = *filters;
|
||||
|
||||
while (tmp_list)
|
||||
@ -557,7 +558,7 @@ generate_motion_event (GdkWindow *window)
|
||||
event->motion.state = _gdk_quartz_events_get_current_keyboard_modifiers () |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
event->motion.is_hint = FALSE;
|
||||
event->motion.device = gdk_seat_get_pointer (seat);
|
||||
gdk_event_set_device (event, gdk_seat_get_pointer (seat));
|
||||
gdk_event_set_seat (event, seat);
|
||||
|
||||
append_event (event, TRUE);
|
||||
@ -643,8 +644,9 @@ find_toplevel_under_pointer (GdkDisplay *display,
|
||||
if (!(toplevel && WINDOW_IS_TOPLEVEL (toplevel)))
|
||||
{
|
||||
gint gdk_x = 0, gdk_y = 0;
|
||||
GdkDevice *pointer = gdk_seat_get_pointer(seat);
|
||||
_gdk_quartz_window_nspoint_to_gdk_xy (screen_point, &gdk_x, &gdk_y);
|
||||
toplevel = gdk_display_get_window_at_pointer (display, &gdk_x, &gdk_y);
|
||||
toplevel = gdk_device_get_window_at_position (pointer, &gdk_x, &gdk_y);
|
||||
|
||||
if (toplevel && ! WINDOW_IS_TOPLEVEL (toplevel))
|
||||
toplevel = gdk_window_get_toplevel (toplevel);
|
||||
@ -1019,6 +1021,8 @@ fill_button_event (GdkWindow *window,
|
||||
gint y_root)
|
||||
{
|
||||
GdkEventType type;
|
||||
GdkDevice *event_device = NULL;
|
||||
gdouble *axes = NULL;
|
||||
gint state;
|
||||
GdkSeat *seat = gdk_display_get_default_seat (_gdk_display);
|
||||
|
||||
@ -1045,6 +1049,20 @@ fill_button_event (GdkWindow *window,
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
event_device = _gdk_quartz_device_manager_core_device_for_ns_event (gdk_display_get_device_manager (_gdk_display),
|
||||
nsevent);
|
||||
|
||||
if ([nsevent subtype] == GDK_QUARTZ_EVENT_SUBTYPE_TABLET_POINT)
|
||||
{
|
||||
axes = g_new (gdouble, TABLET_AXES);
|
||||
|
||||
axes[0] = x;
|
||||
axes[1] = y;
|
||||
axes[2] = [nsevent pressure];
|
||||
axes[3] = [nsevent tilt].x;
|
||||
axes[4] = [nsevent tilt].y;
|
||||
}
|
||||
|
||||
event->any.type = type;
|
||||
event->button.window = window;
|
||||
event->button.time = get_time_from_ns_event (nsevent);
|
||||
@ -1052,11 +1070,12 @@ fill_button_event (GdkWindow *window,
|
||||
event->button.y = y;
|
||||
event->button.x_root = x_root;
|
||||
event->button.y_root = y_root;
|
||||
/* FIXME event->axes */
|
||||
event->button.axes = axes;
|
||||
event->button.state = state;
|
||||
event->button.button = get_mouse_button_from_ns_event (nsevent);
|
||||
|
||||
event->button.device = gdk_seat_get_pointer (seat);
|
||||
gdk_event_set_device (event, gdk_seat_get_pointer (seat));
|
||||
gdk_event_set_source_device (event, event_device);
|
||||
gdk_event_set_seat (event, seat);
|
||||
}
|
||||
|
||||
@ -1070,6 +1089,22 @@ fill_motion_event (GdkWindow *window,
|
||||
gint y_root)
|
||||
{
|
||||
GdkSeat *seat = gdk_display_get_default_seat (_gdk_display);
|
||||
GdkDevice *event_device = NULL;
|
||||
gdouble *axes = NULL;
|
||||
|
||||
event_device = _gdk_quartz_device_manager_core_device_for_ns_event (gdk_display_get_device_manager (_gdk_display),
|
||||
nsevent);
|
||||
|
||||
if ([nsevent subtype] == GDK_QUARTZ_EVENT_SUBTYPE_TABLET_POINT)
|
||||
{
|
||||
axes = g_new (gdouble, TABLET_AXES);
|
||||
|
||||
axes[0] = x;
|
||||
axes[1] = y;
|
||||
axes[2] = [nsevent pressure];
|
||||
axes[3] = [nsevent tilt].x;
|
||||
axes[4] = [nsevent tilt].y;
|
||||
}
|
||||
|
||||
event->any.type = GDK_MOTION_NOTIFY;
|
||||
event->motion.window = window;
|
||||
@ -1078,11 +1113,13 @@ fill_motion_event (GdkWindow *window,
|
||||
event->motion.y = y;
|
||||
event->motion.x_root = x_root;
|
||||
event->motion.y_root = y_root;
|
||||
/* FIXME event->axes */
|
||||
event->motion.axes = axes;
|
||||
event->motion.state = get_keyboard_modifiers_from_ns_event (nsevent) |
|
||||
_gdk_quartz_events_get_current_mouse_modifiers ();
|
||||
event->motion.is_hint = FALSE;
|
||||
event->motion.device = gdk_seat_get_pointer (seat);
|
||||
gdk_event_set_device (event, gdk_seat_get_pointer (seat));
|
||||
gdk_event_set_source_device (event, event_device);
|
||||
|
||||
gdk_event_set_seat (event, seat);
|
||||
}
|
||||
|
||||
@ -1112,9 +1149,9 @@ fill_scroll_event (GdkWindow *window,
|
||||
event->scroll.y_root = y_root;
|
||||
event->scroll.state = get_keyboard_modifiers_from_ns_event (nsevent);
|
||||
event->scroll.direction = direction;
|
||||
event->scroll.device = gdk_seat_get_pointer (seat);
|
||||
event->scroll.delta_x = delta_x;
|
||||
event->scroll.delta_y = delta_y;
|
||||
gdk_event_set_device (event, gdk_seat_get_pointer (seat));
|
||||
gdk_event_set_seat (event, seat);
|
||||
}
|
||||
|
||||
@ -1343,16 +1380,18 @@ _gdk_quartz_events_get_current_keyboard_modifiers (void)
|
||||
GdkModifierType
|
||||
_gdk_quartz_events_get_current_mouse_modifiers (void)
|
||||
{
|
||||
NSUInteger buttons = 0;
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
|
||||
if (gdk_quartz_osx_version () >= GDK_OSX_SNOW_LEOPARD)
|
||||
return get_mouse_button_modifiers_from_ns_buttons ([NSClassFromString(@"NSEvent") pressedMouseButtons]);
|
||||
buttons = [NSClassFromString(@"NSEvent") pressedMouseButtons];
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
|
||||
else
|
||||
#endif
|
||||
#endif
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED < 1060
|
||||
return get_mouse_button_modifiers_from_ns_buttons (GetCurrentButtonState ());
|
||||
buttons = GetCurrentButtonState ();
|
||||
#endif
|
||||
return get_mouse_button_modifiers_from_ns_buttons (buttons);
|
||||
}
|
||||
|
||||
/* Detect window resizing */
|
||||
@ -1470,6 +1509,15 @@ gdk_event_translate (GdkEvent *event,
|
||||
}
|
||||
}
|
||||
|
||||
/* We need to register the proximity event from any point on the screen
|
||||
* to properly register the devices
|
||||
*/
|
||||
if (event_type == GDK_QUARTZ_EVENT_TABLET_PROXIMITY)
|
||||
{
|
||||
_gdk_quartz_device_manager_register_device_for_ns_event (gdk_display_get_device_manager (_gdk_display),
|
||||
nsevent);
|
||||
}
|
||||
|
||||
nswindow = [nsevent window];
|
||||
|
||||
/* Ignore events for windows not created by GDK. */
|
||||
|
@ -75,6 +75,16 @@ typedef enum {
|
||||
GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP
|
||||
} GdkQuartzEventSubType;
|
||||
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 10130
|
||||
#define GDK_QUARTZ_EVENT_TABLET_PROXIMITY NSEventTypeTabletProximity
|
||||
#define GDK_QUARTZ_EVENT_SUBTYPE_TABLET_PROXIMITY NSEventSubtypeTabletProximity
|
||||
#define GDK_QUARTZ_EVENT_SUBTYPE_TABLET_POINT NSEventSubtypeTabletPoint
|
||||
#else
|
||||
#define GDK_QUARTZ_EVENT_TABLET_PROXIMITY NSTabletProximity
|
||||
#define GDK_QUARTZ_EVENT_SUBTYPE_TABLET_PROXIMITY NSTabletProximityEventSubtype
|
||||
#define GDK_QUARTZ_EVENT_SUBTYPE_TABLET_POINT NSTabletPointEventSubtype
|
||||
#endif
|
||||
|
||||
void _gdk_quartz_events_update_focus_window (GdkWindow *new_window,
|
||||
gboolean got_focus);
|
||||
void _gdk_quartz_events_send_map_event (GdkWindow *window);
|
||||
@ -84,6 +94,19 @@ GdkModifierType _gdk_quartz_events_get_current_mouse_modifiers (void);
|
||||
|
||||
void _gdk_quartz_events_break_all_grabs (guint32 time);
|
||||
|
||||
/* Devices */
|
||||
void _gdk_quartz_device_core_set_active (GdkDevice *device,
|
||||
gboolean active,
|
||||
NSUInteger device_id);
|
||||
|
||||
gboolean _gdk_quartz_device_core_is_active (GdkDevice *device,
|
||||
NSUInteger device_id);
|
||||
|
||||
void _gdk_quartz_device_core_set_unique (GdkDevice *device,
|
||||
unsigned long long unique_id);
|
||||
|
||||
unsigned long long _gdk_quartz_device_core_get_unique (GdkDevice *device);
|
||||
|
||||
/* Event loop */
|
||||
gboolean _gdk_quartz_event_loop_check_pending (void);
|
||||
NSEvent * _gdk_quartz_event_loop_get_pending (void);
|
||||
|
@ -18,7 +18,8 @@
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/* GdkScreen is deprecated, but we need to support it still so silence the warnings.*/
|
||||
#define GDK_DISABLE_DEPRECATION_WARNINGS 1
|
||||
#include <gdk/gdk.h>
|
||||
|
||||
#include "gdkprivate-quartz.h"
|
||||
@ -121,9 +122,6 @@ static void
|
||||
gdk_quartz_screen_calculate_layout (GdkQuartzScreen *screen,
|
||||
GdkQuartzDisplay *display)
|
||||
{
|
||||
int i, monitors;
|
||||
int max_x, max_y;
|
||||
|
||||
if (!display)
|
||||
display = GDK_QUARTZ_DISPLAY (gdk_screen_get_display (GDK_SCREEN (screen)));
|
||||
|
||||
|
@ -847,6 +847,7 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display,
|
||||
{
|
||||
GdkWindowImplQuartz *impl;
|
||||
GdkWindowImplQuartz *parent_impl;
|
||||
GdkWindowTypeHint type_hint = GDK_WINDOW_TYPE_HINT_NORMAL;
|
||||
|
||||
GDK_QUARTZ_ALLOC_POOL;
|
||||
|
||||
@ -879,6 +880,12 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display,
|
||||
|
||||
impl->view = NULL;
|
||||
|
||||
if (attributes_mask & GDK_WA_TYPE_HINT)
|
||||
{
|
||||
type_hint = attributes->type_hint;
|
||||
gdk_window_set_type_hint (window, type_hint);
|
||||
}
|
||||
|
||||
switch (window->window_type)
|
||||
{
|
||||
case GDK_WINDOW_TOPLEVEL:
|
||||
@ -908,8 +915,7 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display,
|
||||
window->height);
|
||||
|
||||
if (window->window_type == GDK_WINDOW_TEMP ||
|
||||
((attributes_mask & GDK_WA_TYPE_HINT) &&
|
||||
attributes->type_hint == GDK_WINDOW_TYPE_HINT_SPLASHSCREEN))
|
||||
type_hint == GDK_WINDOW_TYPE_HINT_SPLASHSCREEN)
|
||||
{
|
||||
style_mask = GDK_QUARTZ_BORDERLESS_WINDOW;
|
||||
}
|
||||
@ -927,6 +933,9 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display,
|
||||
defer:NO
|
||||
screen:screen];
|
||||
|
||||
if (type_hint != GDK_WINDOW_TYPE_HINT_NORMAL)
|
||||
impl->toplevel.excludedFromWindowsMenu = true;
|
||||
|
||||
if (attributes_mask & GDK_WA_TITLE)
|
||||
title = attributes->title;
|
||||
else
|
||||
@ -982,9 +991,6 @@ _gdk_quartz_display_create_window_impl (GdkDisplay *display,
|
||||
}
|
||||
|
||||
GDK_QUARTZ_RELEASE_POOL;
|
||||
|
||||
if (attributes_mask & GDK_WA_TYPE_HINT)
|
||||
gdk_window_set_type_hint (window, attributes->type_hint);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2816,6 +2816,14 @@ _gdk_wayland_seat_remove_tablet (GdkWaylandSeat *seat,
|
||||
|
||||
zwp_tablet_v2_destroy (tablet->wp_tablet);
|
||||
|
||||
while (tablet->pads)
|
||||
{
|
||||
GdkWaylandTabletPadData *pad = tablet->pads->data;
|
||||
|
||||
pad->current_tablet = NULL;
|
||||
tablet->pads = g_list_remove (tablet->pads, pad);
|
||||
}
|
||||
|
||||
device_manager->devices =
|
||||
g_list_remove (device_manager->devices, tablet->master);
|
||||
device_manager->devices =
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
#include <sys/mman.h>
|
||||
#include <fribidi.h>
|
||||
|
||||
#include "gdk.h"
|
||||
#include "gdkwayland.h"
|
||||
|
@ -2535,12 +2535,17 @@ calculate_moved_to_rect_result (GdkWindow *window,
|
||||
gboolean *flipped_x,
|
||||
gboolean *flipped_y)
|
||||
{
|
||||
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
GdkWindowImplWayland *impl;
|
||||
GdkWindow *parent;
|
||||
gint window_x, window_y;
|
||||
gint window_width, window_height;
|
||||
GdkRectangle best_rect;
|
||||
|
||||
g_return_if_fail (GDK_IS_WAYLAND_WINDOW (window));
|
||||
g_return_if_fail (GDK_IS_WINDOW_IMPL_WAYLAND (window->impl));
|
||||
|
||||
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
|
||||
parent = translate_from_real_parent_window_geometry (window, &x, &y);
|
||||
*final_rect = (GdkRectangle) {
|
||||
.x = x,
|
||||
@ -5328,10 +5333,16 @@ void
|
||||
gdk_wayland_window_restore_shortcuts (GdkWindow *window,
|
||||
GdkSeat *gdk_seat)
|
||||
{
|
||||
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
struct wl_seat *seat = gdk_wayland_seat_get_wl_seat (gdk_seat);
|
||||
GdkWindowImplWayland *impl;
|
||||
struct wl_seat *seat;
|
||||
struct zwp_keyboard_shortcuts_inhibitor_v1 *inhibitor;
|
||||
|
||||
g_return_if_fail (GDK_IS_WAYLAND_WINDOW (window));
|
||||
g_return_if_fail (GDK_IS_WINDOW_IMPL_WAYLAND (window->impl));
|
||||
|
||||
impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||
seat = gdk_wayland_seat_get_wl_seat (gdk_seat);
|
||||
|
||||
inhibitor = gdk_wayland_window_get_inhibitor (impl, seat);
|
||||
if (inhibitor == NULL)
|
||||
return; /* Not inhibitted */
|
||||
|
@ -802,17 +802,17 @@ _gdk_win32_monitor_get_pixel_structure (GdkMonitor *monitor)
|
||||
GdkWin32Monitor *w32_m;
|
||||
BOOL enabled = TRUE;
|
||||
unsigned int smoothing_orientation = FE_FONTSMOOTHINGORIENTATIONRGB;
|
||||
BOOL cleartype = TRUE;
|
||||
UINT cleartype = FE_FONTSMOOTHINGCLEARTYPE;
|
||||
|
||||
g_return_val_if_fail (monitor != NULL, NULL);
|
||||
|
||||
w32_m = GDK_WIN32_MONITOR (monitor);
|
||||
|
||||
SystemParametersInfoW (SPI_GETFONTSMOOTHING, 0, &enabled, 0);
|
||||
SystemParametersInfoW (SPI_GETCLEARTYPE, 0, &cleartype, 0);
|
||||
SystemParametersInfoW (SPI_GETFONTSMOOTHINGTYPE, 0, &cleartype, 0);
|
||||
|
||||
if (!enabled ||
|
||||
!cleartype ||
|
||||
(cleartype == FE_FONTSMOOTHINGSTANDARD) ||
|
||||
!SystemParametersInfoW (SPI_GETFONTSMOOTHINGORIENTATION, 0, &smoothing_orientation, 0))
|
||||
return "none";
|
||||
|
||||
|
@ -3,8 +3,8 @@
|
||||
GTK_ICON ICON "gtk.ico"
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,24,20,0
|
||||
PRODUCTVERSION 3,24,20,0
|
||||
FILEVERSION 3,24,21,0
|
||||
PRODUCTVERSION 3,24,21,0
|
||||
FILEFLAGSMASK 0
|
||||
FILEFLAGS 0
|
||||
FILEOS VOS__WINDOWS32
|
||||
@ -17,12 +17,12 @@ VS_VERSION_INFO VERSIONINFO
|
||||
BEGIN
|
||||
VALUE "CompanyName", "The GTK developer community"
|
||||
VALUE "FileDescription", "GIMP Drawing Kit"
|
||||
VALUE "FileVersion", "3.24.20.0"
|
||||
VALUE "FileVersion", "3.24.21.0"
|
||||
VALUE "InternalName", "libgdk-win32-3.0-0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald. Modified by the GTK+ Team and others 1997-2011."
|
||||
VALUE "OriginalFilename", "libgdk-win32-3.0-0.dll"
|
||||
VALUE "ProductName", "GTK+"
|
||||
VALUE "ProductVersion", "3.24.20"
|
||||
VALUE "ProductVersion", "3.24.21"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
@ -149,7 +149,7 @@ gdk_x11_window_invalidate_for_new_frame (GdkWindow *window,
|
||||
|
||||
|
||||
invalidate_all = FALSE;
|
||||
if (buffer_age == 0 || buffer_age >= 4)
|
||||
if (buffer_age >= 4)
|
||||
{
|
||||
cairo_rectangle_int_t whole_window = { 0, 0, gdk_window_get_width (window), gdk_window_get_height (window) };
|
||||
|
||||
@ -163,6 +163,10 @@ gdk_x11_window_invalidate_for_new_frame (GdkWindow *window,
|
||||
}
|
||||
else
|
||||
{
|
||||
if (buffer_age == 0)
|
||||
{
|
||||
invalidate_all = TRUE;
|
||||
}
|
||||
if (buffer_age >= 2)
|
||||
{
|
||||
if (window->old_updated_area[0])
|
||||
|
@ -1,8 +1,8 @@
|
||||
#include <winver.h>
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 3,24,20,0
|
||||
PRODUCTVERSION 3,24,20,0
|
||||
FILEVERSION 3,24,21,0
|
||||
PRODUCTVERSION 3,24,21,0
|
||||
FILEFLAGSMASK 0
|
||||
FILEFLAGS 0
|
||||
FILEOS VOS__WINDOWS32
|
||||
@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
|
||||
BEGIN
|
||||
VALUE "CompanyName", "The GTK developer community"
|
||||
VALUE "FileDescription", "GIMP Toolkit"
|
||||
VALUE "FileVersion", "3.24.20.0"
|
||||
VALUE "FileVersion", "3.24.21.0"
|
||||
VALUE "InternalName", "libgtk-win32-3.0-0"
|
||||
VALUE "LegalCopyright", "Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald. Modified by the GTK+ Team and others 1997-2011."
|
||||
VALUE "OriginalFilename", "libgtk-win32-3.0-0.dll"
|
||||
VALUE "ProductName", "GTK+"
|
||||
VALUE "ProductVersion", "3.24.20"
|
||||
VALUE "ProductVersion", "3.24.21"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
@ -8,126 +8,126 @@
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/bullet-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/check-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/dash-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-above.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-horz-scale-has-marks-below.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-above.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/slider-vert-scale-has-marks-below.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-end.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/Adwaita/assets/text-select-start.png</file>
|
||||
<file>theme/Adwaita/assets/bullet-symbolic.svg</file>
|
||||
<file>theme/Adwaita/assets/check-symbolic.svg</file>
|
||||
<file>theme/Adwaita/assets/dash-symbolic.svg</file>
|
||||
@ -135,132 +135,132 @@
|
||||
<file alias='theme/HighContrastInverse/gtk.css'>theme/HighContrast/gtk-inverse.css</file>
|
||||
<file>theme/HighContrast/gtk-contained.css</file>
|
||||
<file>theme/HighContrast/gtk-contained-inverse.css</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/bullet-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/bullet@2-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/check-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/bullet-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/check@2-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/dash-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/check-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/dash@2-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/dash-symbolic.symbolic.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-above.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-horz-scale-has-marks-below.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-above.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-backdrop.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-insensitive@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-insensitive-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-insensitive-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below-insensitive.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/slider-vert-scale-has-marks-below.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-end.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-active@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-active-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-active-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-active.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-hover@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-hover-dark@2.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-hover-dark.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start-hover.png</file>
|
||||
<file preprocess='to-pixdata'>theme/HighContrast/assets/text-select-start.png</file>
|
||||
<file>theme/HighContrast/assets/bullet-symbolic.svg</file>
|
||||
<file>theme/HighContrast/assets/check-symbolic.svg</file>
|
||||
<file>theme/HighContrast/assets/dash-symbolic.svg</file>
|
||||
@ -300,8 +300,8 @@
|
||||
<file preprocess='xml-stripblanks'>ui/gtkmessagedialog.ui</file>
|
||||
<file preprocess='xml-stripblanks'>ui/gtkpagesetupunixdialog.ui</file>
|
||||
<file preprocess='xml-stripblanks'>ui/gtkpathbar.ui</file>
|
||||
<file preprocess='xml-stripblanks'>ui/gtkplacesview.ui</file>
|
||||
<file preprocess='xml-stripblanks'>ui/gtkplacesviewrow.ui</file>
|
||||
<file preprocess='xml-stripblanks'>ui/gtkplacesview.ui</file>
|
||||
<file preprocess='xml-stripblanks'>ui/gtkprintunixdialog.ui</file>
|
||||
<file preprocess='xml-stripblanks'>ui/gtkrecentchooserdefault.ui</file>
|
||||
<file preprocess='xml-stripblanks'>ui/gtkscalebutton.ui</file>
|
||||
@ -325,8 +325,8 @@
|
||||
<file>icons/16x16/actions/gtk-preferences.png</file>
|
||||
<file>icons/16x16/actions/gtk-select-color.png</file>
|
||||
<file>icons/16x16/actions/gtk-select-font.png</file>
|
||||
<file>icons/16x16/actions/gtk-undelete-rtl.png</file>
|
||||
<file>icons/16x16/actions/gtk-undelete.png</file>
|
||||
<file>icons/16x16/actions/gtk-undelete-rtl.png</file>
|
||||
<file>icons/16x16/status/caps-lock-symbolic.symbolic.png</file>
|
||||
<file>icons/16x16/status/image-missing.png</file>
|
||||
<file>icons/16x16/status/switch-off-symbolic.symbolic.png</file>
|
||||
@ -361,8 +361,8 @@
|
||||
<file>icons/24x24/actions/gtk-preferences.png</file>
|
||||
<file>icons/24x24/actions/gtk-select-color.png</file>
|
||||
<file>icons/24x24/actions/gtk-select-font.png</file>
|
||||
<file>icons/24x24/actions/gtk-undelete-rtl.png</file>
|
||||
<file>icons/24x24/actions/gtk-undelete.png</file>
|
||||
<file>icons/24x24/actions/gtk-undelete-rtl.png</file>
|
||||
<file>icons/24x24/status/image-missing.png</file>
|
||||
<file>icons/24x24/categories/emoji-activities-symbolic.symbolic.png</file>
|
||||
<file>icons/24x24/categories/emoji-body-symbolic.symbolic.png</file>
|
||||
|
@ -130,6 +130,9 @@ static const LicenseInfo gtk_license_info [] = {
|
||||
{ N_("Apache License, Version 2.0"), "https://opensource.org/licenses/Apache-2.0" },
|
||||
{ N_("Mozilla Public License 2.0"), "https://opensource.org/licenses/MPL-2.0" }
|
||||
};
|
||||
/* Keep this static assertion updated with the last element of the
|
||||
* enumeration, and make sure it matches the last element of the array */
|
||||
G_STATIC_ASSERT (G_N_ELEMENTS (gtk_license_info) - 1 == GTK_LICENSE_MPL_2_0);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@ -2467,7 +2470,7 @@ gtk_about_dialog_set_license_type (GtkAboutDialog *about,
|
||||
|
||||
g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
|
||||
g_return_if_fail (license_type >= GTK_LICENSE_UNKNOWN &&
|
||||
license_type <= GTK_LICENSE_AGPL_3_0_ONLY);
|
||||
license_type < G_N_ELEMENTS (gtk_license_info));
|
||||
|
||||
priv = about->priv;
|
||||
|
||||
|
@ -60,6 +60,9 @@ typedef struct _GtkAboutDialogPrivate GtkAboutDialogPrivate;
|
||||
* @GTK_LICENSE_LGPL_3_0_ONLY: The GNU Lesser General Public License, version 3.0 only. Since 3.12.
|
||||
* @GTK_LICENSE_AGPL_3_0: The GNU Affero General Public License, version 3.0 or later. Since: 3.22.
|
||||
* @GTK_LICENSE_AGPL_3_0_ONLY: The GNU Affero General Public License, version 3.0 only. Since: 3.22.27.
|
||||
* @GTK_LICENSE_BSD_3: The 3-clause BSD licence. Since: 3.24.20.
|
||||
* @GTK_LICENSE_APACHE_2_0: The Apache License, version 2.0. Since: 3.24.20.
|
||||
* @GTK_LICENSE_MPL_2_0: The Mozilla Public License, version 2.0. Since: 3.24.20.
|
||||
*
|
||||
* The type of license for an application.
|
||||
*
|
||||
|
@ -199,16 +199,18 @@ set_dialog_properties (GtkAppChooserDialog *self)
|
||||
unknown = g_content_type_is_unknown (self->priv->content_type);
|
||||
}
|
||||
|
||||
title = g_strdup (_("Select Application"));
|
||||
subtitle = NULL;
|
||||
string = NULL;
|
||||
|
||||
if (name != NULL)
|
||||
{
|
||||
title = g_strdup (_("Select Application"));
|
||||
/* Translators: %s is a filename */
|
||||
subtitle = g_strdup_printf (_("Opening “%s”."), name);
|
||||
string = g_strdup_printf (_("No applications found for “%s”"), name);
|
||||
}
|
||||
else
|
||||
else if (self->priv->content_type)
|
||||
{
|
||||
title = g_strdup (_("Select Application"));
|
||||
/* Translators: %s is a file type description */
|
||||
subtitle = g_strdup_printf (_("Opening “%s” files."),
|
||||
unknown ? self->priv->content_type : description);
|
||||
|
@ -56,14 +56,18 @@ typedef struct
|
||||
} GtkApplicationImplQuartz;
|
||||
|
||||
G_DEFINE_TYPE (GtkApplicationImplQuartz, gtk_application_impl_quartz, GTK_TYPE_APPLICATION_IMPL)
|
||||
|
||||
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1060
|
||||
@interface GtkApplicationQuartzDelegate : NSObject <NSApplicationDelegate>
|
||||
#else
|
||||
@interface GtkApplicationQuartzDelegate : NSObject
|
||||
#endif
|
||||
{
|
||||
GtkApplicationImplQuartz *quartz;
|
||||
}
|
||||
|
||||
- (id)initWithImpl:(GtkApplicationImplQuartz*)impl;
|
||||
- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *)sender;
|
||||
- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames;
|
||||
@end
|
||||
|
||||
@implementation GtkApplicationQuartzDelegate
|
||||
@ -84,6 +88,35 @@ G_DEFINE_TYPE (GtkApplicationImplQuartz, gtk_application_impl_quartz, GTK_TYPE_A
|
||||
*/
|
||||
return quartz->quit_inhibit == 0 ? NSTerminateNow : NSTerminateCancel;
|
||||
}
|
||||
|
||||
-(void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames
|
||||
{
|
||||
GFile **files;
|
||||
gint i;
|
||||
GApplicationFlags flags;
|
||||
|
||||
flags = g_application_get_flags (G_APPLICATION (quartz->impl.application));
|
||||
|
||||
if (~flags & G_APPLICATION_HANDLES_OPEN)
|
||||
{
|
||||
[theApplication replyToOpenOrPrint:NSApplicationDelegateReplyFailure];
|
||||
return;
|
||||
}
|
||||
|
||||
files = g_new (GFile *, [filenames count]);
|
||||
|
||||
for (i = 0; i < [filenames count]; i++)
|
||||
files[i] = g_file_new_for_path ([(NSString *)[filenames objectAtIndex:i] UTF8String]);
|
||||
|
||||
g_application_open (G_APPLICATION (quartz->impl.application), files, [filenames count], "");
|
||||
|
||||
for (i = 0; i < [filenames count]; i++)
|
||||
g_object_unref (files[i]);
|
||||
|
||||
g_free (files);
|
||||
|
||||
[theApplication replyToOpenOrPrint:NSApplicationDelegateReplySuccess];
|
||||
}
|
||||
@end
|
||||
|
||||
/* these exist only for accel handling */
|
||||
@ -132,7 +165,7 @@ gtk_application_impl_quartz_startup (GtkApplicationImpl *impl,
|
||||
if (register_session)
|
||||
{
|
||||
quartz->delegate = [[GtkApplicationQuartzDelegate alloc] initWithImpl:quartz];
|
||||
[NSApp setDelegate: quartz->delegate];
|
||||
[NSApp setDelegate: (id)(quartz->delegate)];
|
||||
}
|
||||
|
||||
quartz->muxer = gtk_action_muxer_new ();
|
||||
@ -307,6 +340,13 @@ gtk_application_impl_quartz_is_inhibited (GtkApplicationImpl *impl,
|
||||
static void
|
||||
gtk_application_impl_quartz_init (GtkApplicationImplQuartz *quartz)
|
||||
{
|
||||
/* This is required so that Cocoa is not going to parse the
|
||||
command line arguments by itself and generate OpenFile events.
|
||||
We already parse the command line ourselves, so this is needed
|
||||
to prevent opening files twice, etc. */
|
||||
[[NSUserDefaults standardUserDefaults] setObject:@"NO"
|
||||
forKey:@"NSTreatUnknownArgumentsAsOpen"];
|
||||
|
||||
quartz->combined = g_menu_new ();
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@
|
||||
* It is common to use `.ui` as the filename extension for files containing
|
||||
* GtkBuilder UI definitions.
|
||||
*
|
||||
* [RELAX NG Compact Syntax](https://git.gnome.org/browse/gtk+/tree/gtk/gtkbuilder.rnc)
|
||||
* [RELAX NG Compact Syntax](https://gitlab.gnome.org/GNOME/gtk/-/blob/gtk-3-24/gtk/gtkbuilder.rnc)
|
||||
*
|
||||
* The toplevel element is <interface>. It optionally takes a “domain”
|
||||
* attribute, which will make the builder look for translated strings
|
||||
@ -458,6 +458,7 @@ gtk_builder_get_parameters (GtkBuilder *builder,
|
||||
GType object_type,
|
||||
const gchar *object_name,
|
||||
GSList *properties,
|
||||
gsize n_properties,
|
||||
GParamFlags filter_flags,
|
||||
GArray **parameters,
|
||||
GArray **filtered_parameters)
|
||||
@ -466,10 +467,23 @@ gtk_builder_get_parameters (GtkBuilder *builder,
|
||||
DelayedProperty *property;
|
||||
GError *error = NULL;
|
||||
|
||||
/* Create the two arrays with size @n_properties. The total number of elements
|
||||
* between them will eventually be @n_properties, but it’s more important to
|
||||
* avoid realloc()/memcpy() calls on these arrays than to be tight with memory
|
||||
* allocations (and overallocating by 100% is no worse than what #GArray does
|
||||
* internally with doubling its size every time it’s full).
|
||||
*
|
||||
* @n_properties is typically ≤ 8, so it’s
|
||||
* (a) not much of an impact to overallocate
|
||||
* (b) disproportionally subject to realloc()/memcpy() since the array size
|
||||
* doubles 3 times in the first 8 elements
|
||||
*
|
||||
* gtk_builder_get_parameters() gets called twice for every object in every
|
||||
* #GtkBuilder file, so it’s a fairly hot path. */
|
||||
if (parameters)
|
||||
*parameters = g_array_new (FALSE, FALSE, sizeof (GParameter));
|
||||
*parameters = g_array_sized_new (FALSE, FALSE, sizeof (GParameter), n_properties);
|
||||
if (filtered_parameters)
|
||||
*filtered_parameters = g_array_new (FALSE, FALSE, sizeof (GParameter));
|
||||
*filtered_parameters = g_array_sized_new (FALSE, FALSE, sizeof (GParameter), n_properties);
|
||||
|
||||
for (l = properties; l; l = l->next)
|
||||
{
|
||||
@ -670,6 +684,7 @@ _gtk_builder_construct (GtkBuilder *builder,
|
||||
gtk_builder_get_parameters (builder, info->type,
|
||||
info->id,
|
||||
info->properties,
|
||||
info->n_properties,
|
||||
param_filter_flags,
|
||||
¶meters,
|
||||
&construct_parameters);
|
||||
@ -814,6 +829,7 @@ _gtk_builder_apply_properties (GtkBuilder *builder,
|
||||
gtk_builder_get_parameters (builder, info->type,
|
||||
info->id,
|
||||
info->properties,
|
||||
info->n_properties,
|
||||
G_PARAM_CONSTRUCT_ONLY,
|
||||
¶meters, NULL);
|
||||
|
||||
|
@ -1112,6 +1112,7 @@ end_element (GMarkupParseContext *context,
|
||||
}
|
||||
|
||||
object_info->properties = g_slist_prepend (object_info->properties, prop_info);
|
||||
object_info->n_properties++;
|
||||
}
|
||||
else
|
||||
g_assert_not_reached ();
|
||||
|
@ -36,6 +36,7 @@ typedef struct {
|
||||
gchar *id;
|
||||
gchar *constructor;
|
||||
GSList *properties;
|
||||
gsize n_properties;
|
||||
GSList *signals;
|
||||
GSList *bindings;
|
||||
GObject *object;
|
||||
|
@ -706,14 +706,14 @@ gtk_css_node_get_timestamp (GtkCssNode *cssnode)
|
||||
static void
|
||||
gtk_css_node_parent_was_unset (GtkCssNode *node)
|
||||
{
|
||||
if (node->invalid)
|
||||
if (node->visible && node->invalid)
|
||||
GTK_CSS_NODE_GET_CLASS (node)->queue_validate (node);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_css_node_parent_will_be_set (GtkCssNode *node)
|
||||
{
|
||||
if (node->invalid)
|
||||
if (node->visible && node->invalid)
|
||||
GTK_CSS_NODE_GET_CLASS (node)->dequeue_validate (node);
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user