Clean up trailing whitespace
This commit is contained in:
parent
a888e7dac8
commit
42a31c8576
792 changed files with 32776 additions and 32776 deletions
114
README.in
114
README.in
|
|
@ -164,38 +164,38 @@ Release notes for 2.12
|
|||
* The gtk_notebook_set/get_group_id() functions were found to be insufficient
|
||||
and have been deprecated in favour of gtk_notebook_set/get_group().
|
||||
|
||||
* The move-focus signal has been moved to GtkWidget, to unify the
|
||||
various implementations of this signal in specific widgets. Great care
|
||||
* The move-focus signal has been moved to GtkWidget, to unify the
|
||||
various implementations of this signal in specific widgets. Great care
|
||||
has been taken to make sure that all code using this signal continues
|
||||
to work.
|
||||
|
||||
* An unused and hardly visible GtkFrame has been removed from the menu
|
||||
widget hierarchy when GtkComboBox::appears-as-list style property is
|
||||
set. Any RC file applying a different style to any widget below the
|
||||
widget path "gtk-combobox-popup-window.GtkFrame" should take into
|
||||
* An unused and hardly visible GtkFrame has been removed from the menu
|
||||
widget hierarchy when GtkComboBox::appears-as-list style property is
|
||||
set. Any RC file applying a different style to any widget below the
|
||||
widget path "gtk-combobox-popup-window.GtkFrame" should take into
|
||||
account that the frame no longer exists.
|
||||
|
||||
* The external print preview application used by GtkPrintOperationPreview
|
||||
is now passed the print settings on the command line with the
|
||||
--print-settings parameter pointing to a temp file containing the
|
||||
settings. The preview application assumes ownership of the file and
|
||||
should delete it once it does not need it anymore. The --print-settings
|
||||
commandline option is understood by Evince 0.9.0 and newer. To use a
|
||||
different print preview application, change the gtk-print-preview-command
|
||||
* The external print preview application used by GtkPrintOperationPreview
|
||||
is now passed the print settings on the command line with the
|
||||
--print-settings parameter pointing to a temp file containing the
|
||||
settings. The preview application assumes ownership of the file and
|
||||
should delete it once it does not need it anymore. The --print-settings
|
||||
commandline option is understood by Evince 0.9.0 and newer. To use a
|
||||
different print preview application, change the gtk-print-preview-command
|
||||
setting in your gtkrc file, e.g. gtk-print-preview-command = "ggv %f"
|
||||
|
||||
* GtkMenuShell is now defined as an abstract type. It was already
|
||||
documented as an abstract class, and there is little reason to
|
||||
* GtkMenuShell is now defined as an abstract type. It was already
|
||||
documented as an abstract class, and there is little reason to
|
||||
instantiate it.
|
||||
|
||||
* The GtkTooltips struct (this is the old tooltips API) is now considered
|
||||
private. Code that used to access this struct, in particular the
|
||||
tips_data_list field, will need to change. All of the old tooltips
|
||||
API has been deprecated in favour of a new implementation and
|
||||
API. This affects all of the gtk_tooltips_ functions, and functions
|
||||
API. This affects all of the gtk_tooltips_ functions, and functions
|
||||
which take a GtkTooltips argument, such as gtk_tool_item_set_tooltip()
|
||||
and gtk_menu_tool_button_set_arrow_tooltip().
|
||||
|
||||
|
||||
* The memory management of the GtkRecentManager object has been changed,
|
||||
as using the screen didn't guarantee that the singleton instance was
|
||||
correctly destroyed. The screen-related functions have been deprecated,
|
||||
|
|
@ -203,14 +203,14 @@ Release notes for 2.12
|
|||
the gtk_recent_manager_get_default() function is guaranteed to be valid
|
||||
for the entire lifetime of an application.
|
||||
|
||||
* A number of interfaces that have been superseded by newer interfaces for
|
||||
a long time have finally been deprecated. This includes
|
||||
* A number of interfaces that have been superseded by newer interfaces for
|
||||
a long time have finally been deprecated. This includes
|
||||
gtk_widget_ref/unref(), gtk_rc_style_ref/unref() and the old file selector.
|
||||
|
||||
* The various coordinate systems in use in GtkTreeView widgets have
|
||||
been clarified in the documentation, and in the cause of doing so,
|
||||
been clarified in the documentation, and in the cause of doing so,
|
||||
the functions gtk_tree_view_widget_to_tree_coords() and
|
||||
gtk_tree_view_tree_to_widget_coords() have been deprecated in
|
||||
gtk_tree_view_tree_to_widget_coords() have been deprecated in
|
||||
favour of a new family of gtk_tree_view_convert_ functions.
|
||||
|
||||
* gtk_menu_item_remove_submenu() has been deprecated in favour of
|
||||
|
|
@ -254,14 +254,14 @@ Release notes for 2.10
|
|||
gtk_range_set_[upper/lower]_stepper_sensitivity() functions to
|
||||
prevent the arrows from being rendered insensitive.
|
||||
|
||||
* GtkObject now uses the "floating reference" support in GObject.
|
||||
* GtkObject now uses the "floating reference" support in GObject.
|
||||
GTK_OBJECT_IS_FLOATING() will still work, but direct checking
|
||||
of the GTK_FLOATING flag will no longer detect the floating
|
||||
of the GTK_FLOATING flag will no longer detect the floating
|
||||
reference. Details about floating references can be found in the docs:
|
||||
http://developer.gnome.org/doc/API/2.0/gobject/gobject-The-Base-Object-Type.html#floating-ref
|
||||
|
||||
* Accelerators like (_F) are now stripped from labels when they are
|
||||
displayed in toolbars. If this is not wanted, the feature can be
|
||||
* Accelerators like (_F) are now stripped from labels when they are
|
||||
displayed in toolbars. If this is not wanted, the feature can be
|
||||
suppressed by inserting a Unicode control character, e.g ZWNJ.
|
||||
|
||||
* The pixbuf theme engine can now customize expanders (in GtkTreeView
|
||||
|
|
@ -274,14 +274,14 @@ Release notes for 2.10
|
|||
|
||||
* Several new signals have been added to GtkNotebook. Care has been taken
|
||||
to choose signal names which do not collide with signals added by well-known
|
||||
derived classes. The names which can no longer be used for signals in
|
||||
derived classes. The names which can no longer be used for signals in
|
||||
objects derived from GtkNotebook are page-reordered, page-removed and
|
||||
page-added.
|
||||
|
||||
* Due to the interface changes in the file chooser backend interface,
|
||||
the GTK+ ABI version has been bumped to 2.10.0. Third-party filesystem
|
||||
backends have to be ported to the new interface, other modules, such as
|
||||
theme engines, input method modules or pixbuf loaders have to be rebuilt
|
||||
* Due to the interface changes in the file chooser backend interface,
|
||||
the GTK+ ABI version has been bumped to 2.10.0. Third-party filesystem
|
||||
backends have to be ported to the new interface, other modules, such as
|
||||
theme engines, input method modules or pixbuf loaders have to be rebuilt
|
||||
so that they are installed in the right place for GTK+ to find them.
|
||||
|
||||
|
||||
|
|
@ -340,19 +340,19 @@ Release notes for 2.6
|
|||
a clipboard manager following the specification at
|
||||
http://www.freedesktop.org/wiki/Standards/clipboard-manager-spec
|
||||
must be running. A sample implementation of such a clipboard manager
|
||||
is available at
|
||||
is available at
|
||||
http://people.imendio.com/andersca/archives/clipboard-manager-0.3.tar.gz
|
||||
Applications can use the function gdk_display_supports_clipboard_persistence()
|
||||
Applications can use the function gdk_display_supports_clipboard_persistence()
|
||||
to find out if clipboard persistence is available.
|
||||
|
||||
* Notification on clipboard ownership changes via GdkOwnerChange events
|
||||
* Notification on clipboard ownership changes via GdkOwnerChange events
|
||||
requires the XFIXES X extension. Applications can use the function
|
||||
gdk_display_supports_selection_notification() to find out if ownerchip
|
||||
change notification is available.
|
||||
|
||||
* The icon theme code in GTK+ 2.6 follows the freedesktop.org icon theme
|
||||
specification. Setting the XDG_DATA_DIRS environtment variable may be
|
||||
necessary if your icons aren't installed in the default location
|
||||
* The icon theme code in GTK+ 2.6 follows the freedesktop.org icon theme
|
||||
specification. Setting the XDG_DATA_DIRS environtment variable may be
|
||||
necessary if your icons aren't installed in the default location
|
||||
/usr/share/icons.
|
||||
|
||||
* The icon theme code in GTK+ 2.6 can make use of mmap()able cache files
|
||||
|
|
@ -360,49 +360,49 @@ Release notes for 2.6
|
|||
gtk-update-icon-cache to generate these cache files. For further details,
|
||||
see the gtk-update-icon-cache man page or the GTK+ documentation.
|
||||
|
||||
* To reduce code size and improve efficiency, GTK+, when compiled
|
||||
with the GNU toolchain, has separate internal and external entry
|
||||
points for exported functions. The internal names, which begin with
|
||||
* To reduce code size and improve efficiency, GTK+, when compiled
|
||||
with the GNU toolchain, has separate internal and external entry
|
||||
points for exported functions. The internal names, which begin with
|
||||
IA__, may be seen when debugging a GTK+ program.
|
||||
|
||||
* The following functions have been deprecated in GTK+ 2.6:
|
||||
gdk_pango_context_set_colormap
|
||||
gtk_cell_renderer_editing_canceled
|
||||
|
||||
* The new GtkFileChooser widget emphasizes simplicity and thus does
|
||||
not provide a navigation entry by default when opening files.
|
||||
* The new GtkFileChooser widget emphasizes simplicity and thus does
|
||||
not provide a navigation entry by default when opening files.
|
||||
Experienced command line users will likely want to make heavy use of
|
||||
the location dialog brought up by the Control-L key shortcut.
|
||||
|
||||
* The GTK+ libraries use an '_' prefix to indicate private symbols that
|
||||
must not be used by applications. On some platforms, symbols beginning
|
||||
must not be used by applications. On some platforms, symbols beginning
|
||||
with prefixes such as _gtk, _gdk, and _pango will be exported
|
||||
from the library, on others not. In no case can applications
|
||||
use these private symbols. In addition to that, GTK+ 2.6 makes several
|
||||
symbols private which were not in any installed header files and
|
||||
were never intended to be exported.
|
||||
|
||||
* The gdk_pixbuf_xlib library included in the contrib/ directory
|
||||
* The gdk_pixbuf_xlib library included in the contrib/ directory
|
||||
and the framebuffer GDK backend included in the gdk/linux-fb directory
|
||||
of GTK+ are provided on an as-is basis and have not been tested at all.
|
||||
of GTK+ are provided on an as-is basis and have not been tested at all.
|
||||
No guarantees about the degree of workingness or about future
|
||||
compatibility are provided.
|
||||
|
||||
* On Unix, the assumption of GLib and GTK+ by default is that filenames on
|
||||
* On Unix, the assumption of GLib and GTK+ by default is that filenames on
|
||||
the filesystem are encoded in UTF-8 rather than the encoding of the locale;
|
||||
the GTK+ developers consider that having filenames whose interpretation
|
||||
depends on the current locale is fundamentally a bad idea.
|
||||
|
||||
If you have filenames encoded in the encoding of your locale, then you
|
||||
If you have filenames encoded in the encoding of your locale, then you
|
||||
may want to set the G_FILENAME_ENCODING environment variable:
|
||||
|
||||
|
||||
G_FILENAME_ENCODING=@locale
|
||||
export G_FILENAME_ENCODING
|
||||
|
||||
(Earlier versions of GLib 2.x required a different environment variable
|
||||
setting; G_BROKEN_FILENAMES=1 to achieve the same effect; this
|
||||
setting; G_BROKEN_FILENAMES=1 to achieve the same effect; this
|
||||
is still supported, but G_FILENAME_ENCODING is preferred.)
|
||||
Best integration of GTK+ 2.6 with the environment is achieved by
|
||||
Best integration of GTK+ 2.6 with the environment is achieved by
|
||||
using a UTF-8 locale.
|
||||
|
||||
On Windows, filenames passed to GTK+ should always be in UTF-8, as
|
||||
|
|
@ -413,7 +413,7 @@ Release notes for 2.6
|
|||
|
||||
When compiling against GTK+ 2.6, applications intended to be
|
||||
portable to Windows must take the UTF-8 file name encoding into
|
||||
consideration, and use the gstdio wrappers to access files whose
|
||||
consideration, and use the gstdio wrappers to access files whose
|
||||
names have been constructed from strings returned from GTK+ or GLib.
|
||||
|
||||
|
||||
|
|
@ -423,9 +423,9 @@ How to report bugs
|
|||
Bugs should be reported to the GNOME bug tracking system.
|
||||
(http://bugzilla.gnome.org, product gtk+.) You will need to create an
|
||||
account for yourself.
|
||||
|
||||
|
||||
In the bug report please include:
|
||||
|
||||
|
||||
* Information about your system. For instance:
|
||||
|
||||
- What operating system and version
|
||||
|
|
@ -434,12 +434,12 @@ In the bug report please include:
|
|||
|
||||
And anything else you think is relevant.
|
||||
|
||||
* How to reproduce the bug.
|
||||
* How to reproduce the bug.
|
||||
|
||||
If you can reproduce it with one of the tests or demos built with GTK+,
|
||||
such as demos/gtk-demo/gtk-demo, that would be most convenient. Otherwise,
|
||||
please include a short test program that exhibits the behavior. As a
|
||||
last resort, you can also provide a pointer to a larger piece of software
|
||||
If you can reproduce it with one of the tests or demos built with GTK+,
|
||||
such as demos/gtk-demo/gtk-demo, that would be most convenient. Otherwise,
|
||||
please include a short test program that exhibits the behavior. As a
|
||||
last resort, you can also provide a pointer to a larger piece of software
|
||||
that can be downloaded.
|
||||
|
||||
* If the bug was a crash, the exact text that was printed out when the
|
||||
|
|
|
|||
|
|
@ -150,6 +150,6 @@ cd $ORIGDIR || exit $?
|
|||
if test -z "$NOCONFIGURE"; then
|
||||
$srcdir/configure --enable-maintainer-mode $AUTOGEN_CONFIGURE_ARGS "$@" || exit $?
|
||||
|
||||
echo
|
||||
echo
|
||||
echo "Now type 'make' to compile $PROJECT."
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@
|
|||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#ifndef _MSC_VER
|
||||
/* #undef NO_MINUS_C_MINUS_O */
|
||||
#else
|
||||
#else
|
||||
#define NO_MINUS_C_MINUS_O 1
|
||||
#endif
|
||||
|
||||
|
|
|
|||
90
configure.ac
90
configure.ac
|
|
@ -296,7 +296,7 @@ AC_SUBST(gtktargetlib)
|
|||
|
||||
if test "x$enable_debug" = "xyes"; then
|
||||
test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
|
||||
GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_ERRORCHECK_MUTEXES"
|
||||
GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_ERRORCHECK_MUTEXES"
|
||||
else
|
||||
if test "x$enable_debug" = "xno"; then
|
||||
GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
|
||||
|
|
@ -314,7 +314,7 @@ fi
|
|||
AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}",
|
||||
[Define if debugging is enabled])
|
||||
|
||||
|
||||
|
||||
# Build time sanity check...
|
||||
AM_SANITY_CHECK
|
||||
|
||||
|
|
@ -384,11 +384,11 @@ fi
|
|||
# Honor aclocal flags
|
||||
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
|
||||
|
||||
## Initial sanity check, done here so that users get told they
|
||||
## Initial sanity check, done here so that users get told they
|
||||
## have the wrong dependencies as early in the process as possible.
|
||||
## Later on we actually use the cflags/libs from separate pkg-config
|
||||
## calls. Oh, also the later pkg-config calls don't include
|
||||
## the version requirements since those make the module lists
|
||||
## calls. Oh, also the later pkg-config calls don't include
|
||||
## the version requirements since those make the module lists
|
||||
## annoying to construct
|
||||
PKG_CHECK_MODULES(BASE_DEPENDENCIES,
|
||||
[glib-2.0 >= glib_required_version dnl
|
||||
|
|
@ -426,7 +426,7 @@ dnl ******************************************************
|
|||
dnl * See whether to include shared library dependencies *
|
||||
dnl ******************************************************
|
||||
|
||||
AC_ARG_ENABLE(explicit-deps,
|
||||
AC_ARG_ENABLE(explicit-deps,
|
||||
[AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
|
||||
[use explicit dependencies in .pc files [default=auto]])],,
|
||||
[enable_explicit_deps=auto])
|
||||
|
|
@ -437,12 +437,12 @@ case $enable_explicit_deps in
|
|||
export SED
|
||||
deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
|
||||
if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
|
||||
enable_explicit_deps=yes
|
||||
enable_explicit_deps=yes
|
||||
else
|
||||
enable_explicit_deps=no
|
||||
enable_explicit_deps=no
|
||||
fi
|
||||
;;
|
||||
yes|no)
|
||||
yes|no)
|
||||
;;
|
||||
*) AC_MSG_ERROR([Value given to --enable-explicit-deps must be one of yes, no or auto])
|
||||
;;
|
||||
|
|
@ -825,7 +825,7 @@ if test x$enable_modules = xno; then
|
|||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING(whether dynamic modules work)
|
||||
## for loop is to strip newline
|
||||
## for loop is to strip newline
|
||||
tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
|
||||
for I in $tmp; do
|
||||
dynworks=$I
|
||||
|
|
@ -869,7 +869,7 @@ AC_ARG_WITH(included_immodules,
|
|||
[ --with-included-immodules=MODULE1,MODULE2,...
|
||||
build the specified input methods into gtk])
|
||||
|
||||
if $dynworks; then
|
||||
if $dynworks; then
|
||||
:
|
||||
else
|
||||
## if the option was specified, leave it; otherwise disable included immodules
|
||||
|
|
@ -941,7 +941,7 @@ AC_HEADER_SYS_WAIT
|
|||
# support.
|
||||
#
|
||||
AC_CHECK_HEADER(sys/systeminfo.h,
|
||||
AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
|
||||
AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
|
||||
[Define to 1 if sys/systeminfo.h is available]))
|
||||
AC_CHECK_HEADER(sys/sysinfo.h,
|
||||
AC_DEFINE(HAVE_SYS_SYSINFO_H, 1,
|
||||
|
|
@ -982,11 +982,11 @@ fi
|
|||
|
||||
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)
|
||||
|
||||
if test ! -f $srcdir/gtk/gtkbuiltincache.h &&
|
||||
if test ! -f $srcdir/gtk/gtkbuiltincache.h &&
|
||||
test "x$REBUILD_PNGS" = "x#" ; then
|
||||
AC_MSG_ERROR([
|
||||
*** gtkbuiltincache.h is not in the tree, and cannot be built
|
||||
*** because you don't have libpng, or (when cross-compiling) you
|
||||
*** because you don't have libpng, or (when cross-compiling) you
|
||||
*** don't have a prebuilt gtk-update-icon-cache on the build system.])
|
||||
fi
|
||||
|
||||
|
|
@ -996,7 +996,7 @@ fi
|
|||
|
||||
GDK_EXTRA_LIBS="$GDK_WLIBS"
|
||||
GDK_EXTRA_CFLAGS=
|
||||
|
||||
|
||||
# GTK+ uses some X calls, so needs to link against X directly
|
||||
GTK_DEP_PACKAGES_FOR_X=
|
||||
GTK_DEP_LIBS_FOR_X=
|
||||
|
|
@ -1021,12 +1021,12 @@ if test "x$gdktarget" = "xx11"; then
|
|||
X_PACKAGES="$X_PACKAGES x11 xext xrender"
|
||||
x_libs="`$PKG_CONFIG --libs x11 xext xrender`"
|
||||
X_CFLAGS="`$PKG_CONFIG --cflags x11 xext xrender`"
|
||||
|
||||
|
||||
# Strip out any .la files that pkg-config might give us (this happens
|
||||
# with -uninstalled.pc files)
|
||||
x_libs_for_checks=
|
||||
for I in $x_libs ; do
|
||||
case $I in
|
||||
case $I in
|
||||
*.la) ;;
|
||||
*) x_libs_for_checks="$x_libs_for_checks $I" ;;
|
||||
esac
|
||||
|
|
@ -1039,7 +1039,7 @@ if test "x$gdktarget" = "xx11"; then
|
|||
if test x$no_x = xyes ; then
|
||||
AC_MSG_ERROR([X development libraries not found])
|
||||
fi
|
||||
|
||||
|
||||
x_cflags="$X_CFLAGS"
|
||||
x_libs_for_checks="$X_LIBS -lXext -lXrender -lX11 $X_EXTRA_LIBS"
|
||||
|
||||
|
|
@ -1054,7 +1054,7 @@ if test "x$gdktarget" = "xx11"; then
|
|||
|
||||
gtk_save_LIBS=$LIBS
|
||||
LIBS="$x_libs_for_checks $LIBS"
|
||||
|
||||
|
||||
# Sanity check for the X11 and Xext libraries. While everything we need from
|
||||
# Xext is optional, the chances a system has *none* of these things is so
|
||||
# small that we just unconditionally require it.
|
||||
|
|
@ -1088,9 +1088,9 @@ if test "x$gdktarget" = "xx11"; then
|
|||
|
||||
# Generic X11R6 check needed for XIM support; we could
|
||||
# probably use this to replace the above, but we'll
|
||||
# leave the separate checks for XConvertCase and XInternAtoms
|
||||
# leave the separate checks for XConvertCase and XInternAtoms
|
||||
# for clarity
|
||||
|
||||
|
||||
have_x11r6=false
|
||||
AC_CHECK_FUNC(XAddConnectionWatch,
|
||||
have_x11r6=true)
|
||||
|
|
@ -1120,7 +1120,7 @@ if test "x$gdktarget" = "xx11"; then
|
|||
# X SYNC check
|
||||
gtk_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS $x_cflags"
|
||||
|
||||
|
||||
AC_CHECK_FUNC(XSyncQueryExtension,
|
||||
[AC_CHECK_HEADER(X11/extensions/sync.h,
|
||||
AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
|
||||
|
|
@ -1135,9 +1135,9 @@ if test "x$gdktarget" = "xx11"; then
|
|||
AC_CHECK_FUNC(XShmAttach,
|
||||
:,
|
||||
# On AIX, it is in XextSam instead
|
||||
[AC_CHECK_LIB(XextSam, XShmAttach,
|
||||
[AC_CHECK_LIB(XextSam, XShmAttach,
|
||||
[GTK_ADD_LIB(x_extra_libs,XextSam)])])
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "x$enable_shm" = "xyes"; then
|
||||
# Check for shared memory
|
||||
|
|
@ -1151,7 +1151,7 @@ if test "x$gdktarget" = "xx11"; then
|
|||
no_sys_shm=yes)
|
||||
|
||||
# Check for the X shared memory extension header file
|
||||
have_xshm=no
|
||||
have_xshm=no
|
||||
AC_MSG_CHECKING(X11/extensions/XShm.h)
|
||||
if test "x$no_xext_lib" = "xyes"; then
|
||||
:
|
||||
|
|
@ -1183,17 +1183,17 @@ if test "x$gdktarget" = "xx11"; then
|
|||
# Check for Xinerama extension (Solaris impl or Xfree impl)
|
||||
gtk_save_cppflags="$CPPFLAGS"
|
||||
CPPFLAGS="$CPPFLAGS $x_cflags"
|
||||
|
||||
|
||||
# Check for XFree
|
||||
AC_MSG_CHECKING(for Xinerama support on XFree86)
|
||||
|
||||
|
||||
have_xfree_xinerama=false
|
||||
if $PKG_CONFIG --exists xinerama ; then
|
||||
have_xfree_xinerama=true
|
||||
X_PACKAGES="$X_PACKAGES xinerama"
|
||||
else
|
||||
else
|
||||
AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
|
||||
[AC_CHECK_HEADER(X11/extensions/Xinerama.h,
|
||||
[AC_CHECK_HEADER(X11/extensions/Xinerama.h,
|
||||
[GTK_ADD_LIB(x_extra_libs,Xinerama)
|
||||
have_xfree_xinerama=true], :,
|
||||
[#include <X11/Xlib.h>])])
|
||||
|
|
@ -1212,13 +1212,13 @@ if test "x$gdktarget" = "xx11"; then
|
|||
*-*-solaris*)
|
||||
# Check for solaris
|
||||
AC_MSG_CHECKING(for Xinerama support on Solaris)
|
||||
|
||||
|
||||
have_solaris_xinerama=false
|
||||
AC_CHECK_FUNC(XineramaGetInfo,
|
||||
[AC_CHECK_HEADER(X11/extensions/xinerama.h,
|
||||
[have_solaris_xinerama=true], :,
|
||||
[#include <X11/Xlib.h>])])
|
||||
|
||||
|
||||
if $have_solaris_xinerama ; then
|
||||
AC_DEFINE(HAVE_SOLARIS_XINERAMA, 1,
|
||||
[Define to 1 if solaris xinerama is available])
|
||||
|
|
@ -1234,13 +1234,13 @@ if test "x$gdktarget" = "xx11"; then
|
|||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
# set up things for XInput
|
||||
|
||||
if test "x$with_xinput" = "xxfree" || test "x$with_xinput" = "xyes"; then
|
||||
AC_DEFINE(XINPUT_XFREE, 1,
|
||||
[Define to 1 if XFree XInput should be used])
|
||||
|
||||
|
||||
if $PKG_CONFIG --exists xi ; then
|
||||
X_PACKAGES="$X_PACKAGES xi"
|
||||
else
|
||||
|
|
@ -1262,20 +1262,20 @@ if test "x$gdktarget" = "xx11"; then
|
|||
fi
|
||||
X_PACKAGES="$X_PACKAGES xrandr"
|
||||
fi
|
||||
|
||||
|
||||
# Checks for Xcursor library
|
||||
|
||||
|
||||
if $PKG_CONFIG --exists xcursor ; then
|
||||
AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
|
||||
|
||||
|
||||
X_PACKAGES="$X_PACKAGES xcursor"
|
||||
fi
|
||||
|
||||
# Checks for XFixes extension
|
||||
|
||||
|
||||
if test "x$enable_xfixes" != "xno" && $PKG_CONFIG --exists xfixes ; then
|
||||
AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
|
||||
|
||||
|
||||
X_PACKAGES="$X_PACKAGES xfixes"
|
||||
GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xfixes"
|
||||
fi
|
||||
|
|
@ -1452,7 +1452,7 @@ if test "x$gdktarget" = "xx11"; then
|
|||
GTK_PACKAGES="$GTK_PACKAGES pangoft2"
|
||||
fi
|
||||
GTK_EXTRA_LIBS=
|
||||
GTK_EXTRA_CFLAGS=
|
||||
GTK_EXTRA_CFLAGS=
|
||||
GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS $MATH_LIB"
|
||||
GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES $GTK_PACKAGES` $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
|
||||
|
||||
|
|
@ -1499,7 +1499,7 @@ AC_CHECK_MEMBER([struct sockaddr_un.sun_len],
|
|||
[#include <sys/types.h>
|
||||
#include <sys/un.h>]
|
||||
)
|
||||
case $struct_sockaddr_un_sun_len in
|
||||
case $struct_sockaddr_un_sun_len in
|
||||
true)
|
||||
AC_DEFINE_UNQUOTED(HAVE_SOCKADDR_UN_SUN_LEN, 1,
|
||||
[Have the sockaddr_un.sun_len member])
|
||||
|
|
@ -1544,7 +1544,7 @@ else
|
|||
|
||||
if test $CUPS_API_MAJOR -gt 1 -o \
|
||||
$CUPS_API_MAJOR -eq 1 -a $CUPS_API_MINOR -ge 2; then
|
||||
AC_DEFINE(HAVE_CUPS_API_1_2, 1,
|
||||
AC_DEFINE(HAVE_CUPS_API_1_2, 1,
|
||||
[Define to 1 if CUPS 1.2 API is available])
|
||||
fi
|
||||
if test $CUPS_API_MAJOR -gt 1 -o \
|
||||
|
|
@ -1617,17 +1617,17 @@ AC_CHECK_HEADER(cairo-pdf.h,,AC_MSG_ERROR([
|
|||
|
||||
if test "$os_win32" != "yes"; then
|
||||
AC_CHECK_HEADER(cairo-ps.h,,AC_MSG_ERROR([
|
||||
*** Can't find cairo-ps.h. You must build Cairo with the
|
||||
*** Can't find cairo-ps.h. You must build Cairo with the
|
||||
*** postscript backend enabled.]))
|
||||
|
||||
AC_CHECK_HEADER(cairo-svg.h,,AC_MSG_ERROR([
|
||||
*** Can't find cairo-svg.h. You must build Cairo with the
|
||||
*** svg backend enabled.]))
|
||||
fi
|
||||
fi
|
||||
|
||||
CPPFLAGS="$gtk_save_cppflags"
|
||||
|
||||
|
||||
|
||||
|
||||
AC_ARG_ENABLE(test-print-backend,
|
||||
[AS_HELP_STRING([--enable-test-print-backend],
|
||||
[build test print backend])],,
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ IMAGEFILES= alphatest.png \
|
|||
gnome-gmush.png \
|
||||
gnome-gsame.png \
|
||||
gnu-keys.png \
|
||||
gtk-logo-rgb.gif
|
||||
gtk-logo-rgb.gif
|
||||
|
||||
democode_DATA = $(demos) $(IMAGEFILES) demo.ui
|
||||
|
||||
|
|
|
|||
|
|
@ -552,7 +552,7 @@ do_appwindow (GtkWidget *do_widget)
|
|||
|
||||
/* Show text widget info in the statusbar */
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (contents));
|
||||
|
||||
|
||||
g_signal_connect_object (buffer,
|
||||
"changed",
|
||||
G_CALLBACK (update_statusbar),
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ do_builder (GtkWidget *do_widget)
|
|||
static GtkWidget *window = NULL;
|
||||
GError *err = NULL;
|
||||
gchar *filename;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
builder = gtk_builder_new ();
|
||||
|
|
@ -58,7 +58,7 @@ do_builder (GtkWidget *do_widget)
|
|||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,14 +7,14 @@
|
|||
|
||||
static GtkWidget *
|
||||
create_bbox (gint horizontal,
|
||||
char *title,
|
||||
char *title,
|
||||
gint spacing,
|
||||
gint layout)
|
||||
{
|
||||
GtkWidget *frame;
|
||||
GtkWidget *bbox;
|
||||
GtkWidget *button;
|
||||
|
||||
|
||||
frame = gtk_frame_new (title);
|
||||
|
||||
if (horizontal)
|
||||
|
|
@ -27,13 +27,13 @@ create_bbox (gint horizontal,
|
|||
|
||||
gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);
|
||||
gtk_box_set_spacing (GTK_BOX (bbox), spacing);
|
||||
|
||||
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_OK);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
|
||||
button = gtk_button_new_from_stock (GTK_STOCK_HELP);
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
|
||||
|
|
@ -49,66 +49,66 @@ do_button_box (GtkWidget *do_widget)
|
|||
GtkWidget *hbox;
|
||||
GtkWidget *frame_horz;
|
||||
GtkWidget *frame_vert;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
main_vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), main_vbox);
|
||||
|
||||
|
||||
frame_horz = gtk_frame_new ("Horizontal Button Boxes");
|
||||
gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);
|
||||
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
|
||||
gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox),
|
||||
create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
frame_vert = gtk_frame_new ("Vertical Button Boxes");
|
||||
gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
|
||||
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
|
||||
gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),
|
||||
TRUE, TRUE, 0);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),
|
||||
TRUE, TRUE, 5);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
gtk_box_pack_start (GTK_BOX (hbox),
|
||||
create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),
|
||||
TRUE, TRUE, 5);
|
||||
}
|
||||
|
|
@ -118,7 +118,7 @@ do_button_box (GtkWidget *do_widget)
|
|||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -248,9 +248,9 @@ open_display_cb (GtkWidget *button,
|
|||
gtk_entry_set_activates_default (GTK_ENTRY (display_entry), TRUE);
|
||||
dialog_label =
|
||||
gtk_label_new ("Please enter the name of\nthe new display\n");
|
||||
|
||||
|
||||
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
|
||||
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (content_area), dialog_label);
|
||||
gtk_container_add (GTK_CONTAINER (content_area), display_entry);
|
||||
|
||||
|
|
|
|||
|
|
@ -15,12 +15,12 @@ static GtkWidget *frame;
|
|||
/* Expose callback for the drawing area
|
||||
*/
|
||||
static gboolean
|
||||
expose_event_callback (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
expose_event_callback (GtkWidget *widget,
|
||||
GdkEventExpose *event,
|
||||
gpointer data)
|
||||
{
|
||||
GdkWindow *window = gtk_widget_get_window (widget);
|
||||
|
||||
|
||||
if (window)
|
||||
{
|
||||
GtkStyle *style;
|
||||
|
|
@ -47,28 +47,28 @@ change_color_callback (GtkWidget *button,
|
|||
GtkWidget *dialog;
|
||||
GtkColorSelection *colorsel;
|
||||
gint response;
|
||||
|
||||
|
||||
dialog = gtk_color_selection_dialog_new ("Changing color");
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (window));
|
||||
|
||||
colorsel =
|
||||
|
||||
colorsel =
|
||||
GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (dialog)));
|
||||
|
||||
gtk_color_selection_set_previous_color (colorsel, &color);
|
||||
gtk_color_selection_set_current_color (colorsel, &color);
|
||||
gtk_color_selection_set_has_palette (colorsel, TRUE);
|
||||
|
||||
|
||||
response = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
|
||||
if (response == GTK_RESPONSE_OK)
|
||||
{
|
||||
gtk_color_selection_get_current_color (colorsel,
|
||||
&color);
|
||||
|
||||
|
||||
gtk_widget_modify_bg (da, GTK_STATE_NORMAL, &color);
|
||||
}
|
||||
|
||||
|
||||
gtk_widget_destroy (dialog);
|
||||
}
|
||||
|
||||
|
|
@ -78,13 +78,13 @@ do_colorsel (GtkWidget *do_widget)
|
|||
GtkWidget *vbox;
|
||||
GtkWidget *button;
|
||||
GtkWidget *alignment;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
color.red = 0;
|
||||
color.blue = 65535;
|
||||
color.green = 0;
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
|
|
@ -102,8 +102,8 @@ do_colorsel (GtkWidget *do_widget)
|
|||
/*
|
||||
* Create the color swatch area
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0);
|
||||
|
|
@ -117,16 +117,16 @@ do_colorsel (GtkWidget *do_widget)
|
|||
gtk_widget_set_size_request (da, 200, 200);
|
||||
/* set the color */
|
||||
gtk_widget_modify_bg (da, GTK_STATE_NORMAL, &color);
|
||||
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (frame), da);
|
||||
|
||||
alignment = gtk_alignment_new (1.0, 0.5, 0.0, 0.0);
|
||||
|
||||
|
||||
button = gtk_button_new_with_mnemonic ("_Change the above color");
|
||||
gtk_container_add (GTK_CONTAINER (alignment), button);
|
||||
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), alignment, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
g_signal_connect (button, "clicked",
|
||||
G_CALLBACK (change_color_callback), NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
/* Combo boxes
|
||||
/* Combo boxes
|
||||
*
|
||||
* The ComboBox widget allows to select one option out of a list.
|
||||
* The ComboBoxEntry additionally allows the user to enter a value
|
||||
* that is not in the list of options.
|
||||
* that is not in the list of options.
|
||||
*
|
||||
* How the options are displayed is controlled by cell renderers.
|
||||
*/
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
enum
|
||||
enum
|
||||
{
|
||||
PIXBUF_COL,
|
||||
TEXT_COL
|
||||
|
|
@ -20,10 +20,10 @@ strip_underscore (const gchar *text)
|
|||
{
|
||||
gchar *p, *q;
|
||||
gchar *result;
|
||||
|
||||
|
||||
result = g_strdup (text);
|
||||
p = q = result;
|
||||
while (*p)
|
||||
while (*p)
|
||||
{
|
||||
if (*p != '_')
|
||||
{
|
||||
|
|
@ -46,7 +46,7 @@ create_stock_icon_store (void)
|
|||
GTK_STOCK_NEW,
|
||||
GTK_STOCK_CLEAR,
|
||||
NULL,
|
||||
GTK_STOCK_OPEN
|
||||
GTK_STOCK_OPEN
|
||||
};
|
||||
|
||||
GtkStockItem item;
|
||||
|
|
@ -58,7 +58,7 @@ create_stock_icon_store (void)
|
|||
gint i;
|
||||
|
||||
cellview = gtk_cell_view_new ();
|
||||
|
||||
|
||||
store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (stock_id); i++)
|
||||
|
|
@ -88,12 +88,12 @@ create_stock_icon_store (void)
|
|||
}
|
||||
|
||||
gtk_widget_destroy (cellview);
|
||||
|
||||
|
||||
return GTK_TREE_MODEL (store);
|
||||
}
|
||||
|
||||
/* A GtkCellLayoutDataFunc that demonstrates how one can control
|
||||
* sensitivity of rows. This particular function does nothing
|
||||
* sensitivity of rows. This particular function does nothing
|
||||
* useful and just makes the second row insensitive.
|
||||
*/
|
||||
static void
|
||||
|
|
@ -116,7 +116,7 @@ set_sensitive (GtkCellLayout *cell_layout,
|
|||
}
|
||||
|
||||
/* A GtkTreeViewRowSeparatorFunc that demonstrates how rows can be
|
||||
* rendered as separators. This particular function does nothing
|
||||
* rendered as separators. This particular function does nothing
|
||||
* useful and just turns the fourth row into a separator.
|
||||
*/
|
||||
static gboolean
|
||||
|
|
@ -141,11 +141,11 @@ create_capital_store (void)
|
|||
gchar *group;
|
||||
gchar *capital;
|
||||
} capitals[] = {
|
||||
{ "A - B", NULL },
|
||||
{ "A - B", NULL },
|
||||
{ NULL, "Albany" },
|
||||
{ NULL, "Annapolis" },
|
||||
{ NULL, "Atlanta" },
|
||||
{ NULL, "Augusta" },
|
||||
{ NULL, "Augusta" },
|
||||
{ NULL, "Austin" },
|
||||
{ NULL, "Baton Rouge" },
|
||||
{ NULL, "Bismarck" },
|
||||
|
|
@ -199,13 +199,13 @@ create_capital_store (void)
|
|||
{ NULL, "Trenton" },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
|
||||
GtkTreeIter iter, iter2;
|
||||
GtkTreeStore *store;
|
||||
gint i;
|
||||
|
||||
store = gtk_tree_store_new (1, G_TYPE_STRING);
|
||||
|
||||
|
||||
for (i = 0; capitals[i].group || capitals[i].capital; i++)
|
||||
{
|
||||
if (capitals[i].group)
|
||||
|
|
@ -219,7 +219,7 @@ create_capital_store (void)
|
|||
gtk_tree_store_set (store, &iter2, 0, capitals[i].capital, -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return GTK_TREE_MODEL (store);
|
||||
}
|
||||
|
||||
|
|
@ -338,42 +338,42 @@ do_combobox (GtkWidget *do_widget)
|
|||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Combo boxes");
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 2);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
/* A combobox demonstrating cell renderers, separators and
|
||||
* insensitive rows
|
||||
* insensitive rows
|
||||
*/
|
||||
frame = gtk_frame_new ("Some stock icons");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
box = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
|
||||
gtk_container_add (GTK_CONTAINER (frame), box);
|
||||
|
||||
|
||||
model = create_stock_icon_store ();
|
||||
combo = gtk_combo_box_new_with_model (model);
|
||||
g_object_unref (model);
|
||||
gtk_container_add (GTK_CONTAINER (box), combo);
|
||||
|
||||
|
||||
renderer = gtk_cell_renderer_pixbuf_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, FALSE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
|
||||
"pixbuf", PIXBUF_COL,
|
||||
"pixbuf", PIXBUF_COL,
|
||||
NULL);
|
||||
|
||||
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
|
||||
renderer,
|
||||
set_sensitive,
|
||||
NULL, NULL);
|
||||
|
||||
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
|
||||
|
|
@ -385,11 +385,11 @@ do_combobox (GtkWidget *do_widget)
|
|||
set_sensitive,
|
||||
NULL, NULL);
|
||||
|
||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo),
|
||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo),
|
||||
is_separator, NULL, NULL);
|
||||
|
||||
|
||||
gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
|
||||
|
||||
|
||||
/* A combobox demonstrating trees.
|
||||
*/
|
||||
frame = gtk_frame_new ("Where are we ?");
|
||||
|
|
@ -398,7 +398,7 @@ do_combobox (GtkWidget *do_widget)
|
|||
box = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
|
||||
gtk_container_add (GTK_CONTAINER (frame), box);
|
||||
|
||||
|
||||
model = create_capital_store ();
|
||||
combo = gtk_combo_box_new_with_model (model);
|
||||
g_object_unref (model);
|
||||
|
|
@ -423,21 +423,21 @@ do_combobox (GtkWidget *do_widget)
|
|||
*/
|
||||
frame = gtk_frame_new ("Editable");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
box = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box), 5);
|
||||
gtk_container_add (GTK_CONTAINER (frame), box);
|
||||
|
||||
|
||||
combo = gtk_combo_box_text_new_with_entry ();
|
||||
fill_combo_entry (combo);
|
||||
gtk_container_add (GTK_CONTAINER (box), combo);
|
||||
|
||||
|
||||
entry = g_object_new (TYPE_MASK_ENTRY, NULL);
|
||||
MASK_ENTRY (entry)->mask = "^([0-9]*|One|Two|2\302\275|Three)$";
|
||||
|
||||
|
||||
gtk_container_remove (GTK_CONTAINER (combo), gtk_bin_get_child (GTK_BIN (combo)));
|
||||
gtk_container_add (GTK_CONTAINER (combo), entry);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (!gtk_widget_get_visible (window))
|
||||
|
|
@ -445,7 +445,7 @@ do_combobox (GtkWidget *do_widget)
|
|||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ interactive_dialog_clicked (GtkButton *button,
|
|||
gtk_entry_set_text (GTK_ENTRY (local_entry2), gtk_entry_get_text (GTK_ENTRY (entry2)));
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), local_entry2, 1, 2, 1, 2);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), local_entry2);
|
||||
|
||||
|
||||
gtk_widget_show_all (hbox);
|
||||
response = gtk_dialog_run (GTK_DIALOG (dialog));
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ do_dialog (GtkWidget *do_widget)
|
|||
GtkWidget *button;
|
||||
GtkWidget *table;
|
||||
GtkWidget *label;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
|
|
@ -157,7 +157,7 @@ do_dialog (GtkWidget *do_widget)
|
|||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry1);
|
||||
|
||||
label = gtk_label_new_with_mnemonic ("E_ntry 2");
|
||||
|
||||
|
||||
gtk_table_attach_defaults (GTK_TABLE (table),
|
||||
label,
|
||||
0, 1, 1, 2);
|
||||
|
|
@ -172,7 +172,7 @@ do_dialog (GtkWidget *do_widget)
|
|||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ scribble_configure_event (GtkWidget *widget,
|
|||
{
|
||||
cairo_t *cr;
|
||||
GtkAllocation allocation;
|
||||
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
|
||||
if (surface)
|
||||
|
|
@ -59,7 +59,7 @@ scribble_expose_event (GtkWidget *widget,
|
|||
cairo_t *cr;
|
||||
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (widget));
|
||||
|
||||
|
||||
cairo_set_source_surface (cr, surface, 0, 0);
|
||||
gdk_cairo_rectangle (cr, &event->area);
|
||||
cairo_fill (cr);
|
||||
|
|
@ -152,7 +152,7 @@ checkerboard_expose (GtkWidget *da,
|
|||
gint i, j, xcount, ycount;
|
||||
cairo_t *cr;
|
||||
GtkAllocation allocation;
|
||||
|
||||
|
||||
gtk_widget_get_allocation (da, &allocation);
|
||||
|
||||
#define CHECK_SIZE 10
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
* GtkCellRenderer::editing-started signal to do custom setup of the
|
||||
* editable widget.
|
||||
*
|
||||
* The cell renderers used in this demo are GtkCellRendererText,
|
||||
* The cell renderers used in this demo are GtkCellRendererText,
|
||||
* GtkCellRendererCombo and GtkCellRendererProgress.
|
||||
*/
|
||||
|
||||
|
|
@ -205,7 +205,7 @@ editing_started (GtkCellRenderer *cell,
|
|||
const gchar *path,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),
|
||||
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (editable),
|
||||
separator_row, NULL, NULL);
|
||||
}
|
||||
|
||||
|
|
@ -259,7 +259,7 @@ cell_edited (GtkCellRendererText *cell,
|
|||
}
|
||||
|
||||
static void
|
||||
add_columns (GtkTreeView *treeview,
|
||||
add_columns (GtkTreeView *treeview,
|
||||
GtkTreeModel *items_model,
|
||||
GtkTreeModel *numbers_model)
|
||||
{
|
||||
|
|
@ -306,7 +306,7 @@ add_columns (GtkTreeView *treeview,
|
|||
-1, "Yummy", renderer,
|
||||
"value", COLUMN_ITEM_YUMMY,
|
||||
NULL);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ create_completion_model (void)
|
|||
{
|
||||
GtkListStore *store;
|
||||
GtkTreeIter iter;
|
||||
|
||||
|
||||
store = gtk_list_store_new (1, G_TYPE_STRING);
|
||||
|
||||
/* Append one word */
|
||||
|
|
@ -29,7 +29,7 @@ create_completion_model (void)
|
|||
/* And another word */
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, "totally", -1);
|
||||
|
||||
|
||||
return GTK_TREE_MODEL (store);
|
||||
}
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ do_entry_completion (GtkWidget *do_widget)
|
|||
GtkWidget *entry;
|
||||
GtkEntryCompletion *completion;
|
||||
GtkTreeModel *completion_model;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_dialog_new_with_buttons ("GtkEntryCompletion",
|
||||
|
|
@ -76,12 +76,12 @@ do_entry_completion (GtkWidget *do_widget)
|
|||
/* Assign the completion to the entry */
|
||||
gtk_entry_set_completion (GTK_ENTRY (entry), completion);
|
||||
g_object_unref (completion);
|
||||
|
||||
|
||||
/* Create a tree model and use it as the completion model */
|
||||
completion_model = create_completion_model ();
|
||||
gtk_entry_completion_set_model (completion, completion_model);
|
||||
g_object_unref (completion_model);
|
||||
|
||||
|
||||
/* Use model column 0 as the text column */
|
||||
gtk_entry_completion_set_text_column (completion, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ do_expander (GtkWidget *do_widget)
|
|||
GtkWidget *vbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *expander;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_dialog_new_with_buttons ("GtkExpander",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ typedef GtkWidget *(*GDoDemoFunc) (GtkWidget *do_widget);
|
|||
|
||||
typedef struct _Demo Demo;
|
||||
|
||||
struct _Demo
|
||||
struct _Demo
|
||||
{
|
||||
gchar *title;
|
||||
gchar *filename;
|
||||
|
|
@ -17,7 +17,7 @@ EOT
|
|||
|
||||
for $file (@ARGV) {
|
||||
my %demo;
|
||||
|
||||
|
||||
($basename = $file) =~ s/\.c$//;
|
||||
|
||||
open INFO_FILE, $file or die "Cannot open '$file'\n";
|
||||
|
|
@ -46,7 +46,7 @@ foreach $href (@demos) {
|
|||
$do_next = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($do_next) {
|
||||
next;
|
||||
}
|
||||
|
|
@ -66,24 +66,24 @@ if (@parents) {
|
|||
$i = 0;
|
||||
for ($i = 0; $i <= $#parents; $i++) {
|
||||
$first = 1;
|
||||
|
||||
|
||||
print "\nDemo ", $child_arrays[$i], "[] = {\n";
|
||||
|
||||
|
||||
$j = 0;
|
||||
for ($j = 0; $j <= $#demos; $j++) {
|
||||
$href = $demos[$j];
|
||||
|
||||
|
||||
if (!$demos[$j]) {
|
||||
next;
|
||||
}
|
||||
|
||||
|
||||
if ($demos[$j]{"title"} =~ m|^$parents[$i]/([-\w\s]+)$|) {
|
||||
if ($first) {
|
||||
$first = 0;
|
||||
} else {
|
||||
print ",\n";
|
||||
}
|
||||
|
||||
|
||||
print qq ( { "$1", "$demos[$j]{file}", $demos[$j]{func}, NULL });
|
||||
|
||||
# hack ... ugly
|
||||
|
|
@ -94,7 +94,7 @@ if (@parents) {
|
|||
print ",\n";
|
||||
print qq ( { NULL } );
|
||||
print "\n};\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# sort @demos
|
||||
|
|
@ -142,17 +142,17 @@ foreach $href (@demos) {
|
|||
} else {
|
||||
print qq ( { "$href->{title}", "$href->{file}", $href->{func}, $child_arrays[$i] });
|
||||
}
|
||||
|
||||
|
||||
$handled = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($handled) {
|
||||
next;
|
||||
}
|
||||
|
||||
|
||||
print qq ( { "$href->{title}", "$href->{file}", $href->{func}, NULL });
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* Text Widget/Hypertext
|
||||
*
|
||||
* Usually, tags modify the appearance of text in the view, e.g. making it
|
||||
* bold or colored or underlined. But tags are not restricted to appearance.
|
||||
* They can also affect the behavior of mouse and key presses, as this demo
|
||||
* Usually, tags modify the appearance of text in the view, e.g. making it
|
||||
* bold or colored or underlined. But tags are not restricted to appearance.
|
||||
* They can also affect the behavior of mouse and key presses, as this demo
|
||||
* shows.
|
||||
*/
|
||||
|
||||
|
|
@ -12,19 +12,19 @@
|
|||
/* Inserts a piece of text into the buffer, giving it the usual
|
||||
* appearance of a hyperlink in a web browser: blue and underlined.
|
||||
* Additionally, attaches some data on the tag, to make it recognizable
|
||||
* as a link.
|
||||
* as a link.
|
||||
*/
|
||||
static void
|
||||
insert_link (GtkTextBuffer *buffer,
|
||||
GtkTextIter *iter,
|
||||
gchar *text,
|
||||
static void
|
||||
insert_link (GtkTextBuffer *buffer,
|
||||
GtkTextIter *iter,
|
||||
gchar *text,
|
||||
gint page)
|
||||
{
|
||||
GtkTextTag *tag;
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"foreground", "blue",
|
||||
"underline", PANGO_UNDERLINE_SINGLE,
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"foreground", "blue",
|
||||
"underline", PANGO_UNDERLINE_SINGLE,
|
||||
NULL);
|
||||
g_object_set_data (G_OBJECT (tag), "page", GINT_TO_POINTER (page));
|
||||
gtk_text_buffer_insert_with_tags (buffer, iter, text, -1, tag, NULL);
|
||||
|
|
@ -34,7 +34,7 @@ insert_link (GtkTextBuffer *buffer,
|
|||
* hypertext app, this method would parse a file to identify the links.
|
||||
*/
|
||||
static void
|
||||
show_page (GtkTextBuffer *buffer,
|
||||
show_page (GtkTextBuffer *buffer,
|
||||
gint page)
|
||||
{
|
||||
GtkTextIter iter;
|
||||
|
|
@ -51,7 +51,7 @@ show_page (GtkTextBuffer *buffer,
|
|||
}
|
||||
else if (page == 2)
|
||||
{
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
"A tag is an attribute that can be applied to some range of text. "
|
||||
"For example, a tag might be called \"bold\" and make the text inside "
|
||||
"the tag bold. However, the tag concept is more general than that; "
|
||||
|
|
@ -60,27 +60,27 @@ show_page (GtkTextBuffer *buffer,
|
|||
"user can't edit it, or countless other things.\n", -1);
|
||||
insert_link (buffer, &iter, "Go back", 1);
|
||||
}
|
||||
else if (page == 3)
|
||||
else if (page == 3)
|
||||
{
|
||||
GtkTextTag *tag;
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"weight", PANGO_WEIGHT_BOLD,
|
||||
|
||||
tag = gtk_text_buffer_create_tag (buffer, NULL,
|
||||
"weight", PANGO_WEIGHT_BOLD,
|
||||
NULL);
|
||||
gtk_text_buffer_insert_with_tags (buffer, &iter, "hypertext:\n", -1, tag, NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
"machine-readable text that is not sequential but is organized "
|
||||
"so that related items of information are connected.\n", -1);
|
||||
insert_link (buffer, &iter, "Go back", 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Looks at all tags covering the position of iter in the text view,
|
||||
/* Looks at all tags covering the position of iter in the text view,
|
||||
* and if one of them is a link, follow it by showing the page identified
|
||||
* by the data attached to it.
|
||||
*/
|
||||
static void
|
||||
follow_if_link (GtkWidget *text_view,
|
||||
follow_if_link (GtkWidget *text_view,
|
||||
GtkTextIter *iter)
|
||||
{
|
||||
GSList *tags = NULL, *tagp = NULL;
|
||||
|
|
@ -98,7 +98,7 @@ follow_if_link (GtkWidget *text_view,
|
|||
}
|
||||
}
|
||||
|
||||
if (tags)
|
||||
if (tags)
|
||||
g_slist_free (tags);
|
||||
}
|
||||
|
||||
|
|
@ -113,10 +113,10 @@ key_press_event (GtkWidget *text_view,
|
|||
|
||||
switch (event->keyval)
|
||||
{
|
||||
case GDK_Return:
|
||||
case GDK_Return:
|
||||
case GDK_KP_Enter:
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &iter,
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &iter,
|
||||
gtk_text_buffer_get_insert (buffer));
|
||||
follow_if_link (text_view, &iter);
|
||||
break;
|
||||
|
|
@ -154,7 +154,7 @@ event_after (GtkWidget *text_view,
|
|||
if (gtk_text_iter_get_offset (&start) != gtk_text_iter_get_offset (&end))
|
||||
return FALSE;
|
||||
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
GTK_TEXT_WINDOW_WIDGET,
|
||||
event->x, event->y, &x, &y);
|
||||
|
||||
|
|
@ -169,7 +169,7 @@ static gboolean hovering_over_link = FALSE;
|
|||
static GdkCursor *hand_cursor = NULL;
|
||||
static GdkCursor *regular_cursor = NULL;
|
||||
|
||||
/* Looks at all tags covering the position (x, y) in the text view,
|
||||
/* Looks at all tags covering the position (x, y) in the text view,
|
||||
* and if one of them is a link, change the cursor to the "hands" cursor
|
||||
* typically used by web browsers.
|
||||
*/
|
||||
|
|
@ -183,14 +183,14 @@ set_cursor_if_appropriate (GtkTextView *text_view,
|
|||
gboolean hovering = FALSE;
|
||||
|
||||
gtk_text_view_get_iter_at_location (text_view, &iter, x, y);
|
||||
|
||||
|
||||
tags = gtk_text_iter_get_tags (&iter);
|
||||
for (tagp = tags; tagp != NULL; tagp = tagp->next)
|
||||
{
|
||||
GtkTextTag *tag = tagp->data;
|
||||
gint page = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tag), "page"));
|
||||
|
||||
if (page != 0)
|
||||
if (page != 0)
|
||||
{
|
||||
hovering = TRUE;
|
||||
break;
|
||||
|
|
@ -207,11 +207,11 @@ set_cursor_if_appropriate (GtkTextView *text_view,
|
|||
gdk_window_set_cursor (gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT), regular_cursor);
|
||||
}
|
||||
|
||||
if (tags)
|
||||
if (tags)
|
||||
g_slist_free (tags);
|
||||
}
|
||||
|
||||
/* Update the cursor image if the pointer moved.
|
||||
/* Update the cursor image if the pointer moved.
|
||||
*/
|
||||
static gboolean
|
||||
motion_notify_event (GtkWidget *text_view,
|
||||
|
|
@ -219,7 +219,7 @@ motion_notify_event (GtkWidget *text_view,
|
|||
{
|
||||
gint x, y;
|
||||
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
GTK_TEXT_WINDOW_WIDGET,
|
||||
event->x, event->y, &x, &y);
|
||||
|
||||
|
|
@ -237,10 +237,10 @@ visibility_notify_event (GtkWidget *text_view,
|
|||
GdkEventVisibility *event)
|
||||
{
|
||||
gint wx, wy, bx, by;
|
||||
|
||||
|
||||
gdk_window_get_pointer (gtk_widget_get_window (text_view), &wx, &wy, NULL);
|
||||
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
|
||||
gtk_text_view_window_to_buffer_coords (GTK_TEXT_VIEW (text_view),
|
||||
GTK_TEXT_WINDOW_WIDGET,
|
||||
wx, wy, &bx, &by);
|
||||
|
||||
|
|
@ -262,13 +262,13 @@ do_hypertext (GtkWidget *do_widget)
|
|||
|
||||
hand_cursor = gdk_cursor_new (GDK_HAND2);
|
||||
regular_cursor = gdk_cursor_new (GDK_XTERM);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
450, 450);
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
|
|
@ -277,17 +277,17 @@ do_hypertext (GtkWidget *do_widget)
|
|||
|
||||
view = gtk_text_view_new ();
|
||||
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD);
|
||||
g_signal_connect (view, "key-press-event",
|
||||
g_signal_connect (view, "key-press-event",
|
||||
G_CALLBACK (key_press_event), NULL);
|
||||
g_signal_connect (view, "event-after",
|
||||
g_signal_connect (view, "event-after",
|
||||
G_CALLBACK (event_after), NULL);
|
||||
g_signal_connect (view, "motion-notify-event",
|
||||
g_signal_connect (view, "motion-notify-event",
|
||||
G_CALLBACK (motion_notify_event), NULL);
|
||||
g_signal_connect (view, "visibility-notify-event",
|
||||
g_signal_connect (view, "visibility-notify-event",
|
||||
G_CALLBACK (visibility_notify_event), NULL);
|
||||
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
|
||||
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
|
|
|
|||
|
|
@ -59,11 +59,11 @@ get_democodedir (void)
|
|||
* demo_find_file:
|
||||
* @base: base filename
|
||||
* @err: location to store error, or %NULL.
|
||||
*
|
||||
*
|
||||
* Looks for @base first in the current directory, then in the
|
||||
* location GTK+ where it will be installed on make install,
|
||||
* returns the first file found.
|
||||
*
|
||||
*
|
||||
* Return value: the filename, if found or %NULL
|
||||
**/
|
||||
gchar *
|
||||
|
|
@ -71,7 +71,7 @@ demo_find_file (const char *base,
|
|||
GError **err)
|
||||
{
|
||||
g_return_val_if_fail (err == NULL || *err == NULL, NULL);
|
||||
|
||||
|
||||
if (g_file_test ("gtk-logo-rgb.gif", G_FILE_TEST_EXISTS) &&
|
||||
g_file_test (base, G_FILE_TEST_EXISTS))
|
||||
return g_strdup (base);
|
||||
|
|
@ -113,17 +113,17 @@ gboolean
|
|||
read_line (FILE *stream, GString *str)
|
||||
{
|
||||
int n_read = 0;
|
||||
|
||||
|
||||
#ifdef HAVE_FLOCKFILE
|
||||
flockfile (stream);
|
||||
#endif
|
||||
|
||||
g_string_truncate (str, 0);
|
||||
|
||||
|
||||
while (1)
|
||||
{
|
||||
int c;
|
||||
|
||||
|
||||
#ifdef HAVE_FLOCKFILE
|
||||
c = getc_unlocked (stream);
|
||||
#else
|
||||
|
|
@ -145,12 +145,12 @@ read_line (FILE *stream, GString *str)
|
|||
#else
|
||||
int next_c = getc (stream);
|
||||
#endif
|
||||
|
||||
|
||||
if (!(next_c == EOF ||
|
||||
(c == '\r' && next_c == '\n') ||
|
||||
(c == '\n' && next_c == '\r')))
|
||||
ungetc (next_c, stream);
|
||||
|
||||
|
||||
goto done;
|
||||
}
|
||||
default:
|
||||
|
|
@ -534,7 +534,7 @@ load_file (const gchar *filename)
|
|||
|
||||
g_free (current_file);
|
||||
current_file = g_strdup (filename);
|
||||
|
||||
|
||||
gtk_text_buffer_get_bounds (info_buffer, &start, &end);
|
||||
gtk_text_buffer_delete (info_buffer, &start, &end);
|
||||
|
||||
|
|
@ -565,7 +565,7 @@ load_file (const gchar *filename)
|
|||
gchar *p = buffer->str;
|
||||
gchar *q;
|
||||
gchar *r;
|
||||
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
|
|
@ -595,11 +595,11 @@ load_file (const gchar *filename)
|
|||
gtk_text_buffer_apply_tag_by_name (info_buffer, "title", &start, &end);
|
||||
|
||||
start = end;
|
||||
|
||||
|
||||
state++;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 1:
|
||||
/* Reading body of info section */
|
||||
while (g_ascii_isspace (*p))
|
||||
|
|
@ -612,14 +612,14 @@ load_file (const gchar *filename)
|
|||
else
|
||||
{
|
||||
int len;
|
||||
|
||||
|
||||
while (*p == '*' || g_ascii_isspace (*p))
|
||||
p++;
|
||||
|
||||
len = strlen (p);
|
||||
while (g_ascii_isspace (*(p + len - 1)))
|
||||
len--;
|
||||
|
||||
|
||||
if (len > 0)
|
||||
{
|
||||
if (in_para)
|
||||
|
|
@ -649,7 +649,7 @@ load_file (const gchar *filename)
|
|||
}
|
||||
else
|
||||
break;
|
||||
|
||||
|
||||
case 3:
|
||||
/* Reading program body */
|
||||
gtk_text_buffer_insert (source_buffer, &start, p, -1);
|
||||
|
|
@ -659,7 +659,7 @@ load_file (const gchar *filename)
|
|||
}
|
||||
|
||||
fclose (file);
|
||||
|
||||
|
||||
fontify ();
|
||||
|
||||
g_string_free (buffer, TRUE);
|
||||
|
|
@ -677,7 +677,7 @@ row_activated_cb (GtkTreeView *tree_view,
|
|||
GtkTreeModel *model;
|
||||
|
||||
model = gtk_tree_view_get_model (tree_view);
|
||||
|
||||
|
||||
gtk_tree_model_get_iter (model, &iter, path);
|
||||
gtk_tree_model_get (GTK_TREE_MODEL (model),
|
||||
&iter,
|
||||
|
|
@ -692,15 +692,15 @@ row_activated_cb (GtkTreeView *tree_view,
|
|||
STYLE_COLUMN, (style == PANGO_STYLE_ITALIC ? PANGO_STYLE_NORMAL : PANGO_STYLE_ITALIC),
|
||||
-1);
|
||||
window = (func) (gtk_widget_get_toplevel (GTK_WIDGET (tree_view)));
|
||||
|
||||
|
||||
if (window != NULL)
|
||||
{
|
||||
CallbackData *cbdata;
|
||||
|
||||
|
||||
cbdata = g_new (CallbackData, 1);
|
||||
cbdata->model = model;
|
||||
cbdata->path = gtk_tree_path_copy (path);
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (window_closed_cb), cbdata);
|
||||
}
|
||||
|
|
@ -739,16 +739,16 @@ create_text (GtkTextBuffer **buffer,
|
|||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_SHADOW_IN);
|
||||
|
||||
|
||||
text_view = gtk_text_view_new ();
|
||||
|
||||
|
||||
*buffer = gtk_text_buffer_new (NULL);
|
||||
gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), *buffer);
|
||||
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
|
||||
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (text_view), FALSE);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
|
||||
|
||||
|
||||
if (is_source)
|
||||
{
|
||||
font_desc = pango_font_description_from_string ("monospace");
|
||||
|
|
@ -768,7 +768,7 @@ create_text (GtkTextBuffer **buffer,
|
|||
gtk_text_view_set_pixels_below_lines (GTK_TEXT_VIEW (text_view),
|
||||
2);
|
||||
}
|
||||
|
||||
|
||||
return scrolled_window;
|
||||
}
|
||||
|
||||
|
|
@ -815,13 +815,13 @@ create_tree (void)
|
|||
|
||||
if (!children)
|
||||
continue;
|
||||
|
||||
|
||||
while (children->title)
|
||||
{
|
||||
GtkTreeIter child_iter;
|
||||
|
||||
gtk_tree_store_append (GTK_TREE_STORE (model), &child_iter, &iter);
|
||||
|
||||
|
||||
gtk_tree_store_set (GTK_TREE_STORE (model),
|
||||
&child_iter,
|
||||
TITLE_COLUMN, children->title,
|
||||
|
|
@ -829,7 +829,7 @@ create_tree (void)
|
|||
FUNC_COLUMN, children->func,
|
||||
STYLE_COLUMN, PANGO_STYLE_NORMAL,
|
||||
-1);
|
||||
|
||||
|
||||
children++;
|
||||
}
|
||||
}
|
||||
|
|
@ -841,7 +841,7 @@ create_tree (void)
|
|||
"text", TITLE_COLUMN,
|
||||
"style", STYLE_COLUMN,
|
||||
NULL);
|
||||
|
||||
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view),
|
||||
GTK_TREE_VIEW_COLUMN (column));
|
||||
|
||||
|
|
@ -853,7 +853,7 @@ create_tree (void)
|
|||
|
||||
gtk_tree_view_collapse_all (GTK_TREE_VIEW (tree_view));
|
||||
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE);
|
||||
|
||||
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_POLICY_NEVER,
|
||||
|
|
@ -896,7 +896,7 @@ setup_default_icon (void)
|
|||
if (err)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
|
||||
dialog = gtk_message_dialog_new (NULL, 0,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
|
|
@ -910,7 +910,7 @@ setup_default_icon (void)
|
|||
|
||||
if (pixbuf)
|
||||
{
|
||||
GList *list;
|
||||
GList *list;
|
||||
GdkPixbuf *transparent;
|
||||
|
||||
/* The gtk-logo-rgb icon has a white background, make it transparent */
|
||||
|
|
@ -944,11 +944,11 @@ main (int argc, char **argv)
|
|||
g_setenv ("GTK_IM_MODULE_FILE", "../../modules/input/immodules.cache", TRUE);
|
||||
}
|
||||
/* -- End of hack -- */
|
||||
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
setup_default_icon ();
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "GTK+ Code Demos");
|
||||
g_signal_connect_after (window, "destroy",
|
||||
|
|
@ -999,13 +999,13 @@ main (int argc, char **argv)
|
|||
"foreground", "DarkGoldenrod4",
|
||||
NULL);
|
||||
g_object_unref (source_buffer);
|
||||
|
||||
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
|
||||
|
||||
load_file (testgtk_demos[0].filename);
|
||||
|
||||
|
||||
gtk_main ();
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
## Makefile for building the gtk test apps with Microsoft C
|
||||
## Use: nmake -f makefile.msc
|
||||
|
||||
## There is no install target, you have to decide where and
|
||||
## There is no install target, you have to decide where and
|
||||
## how to install for yourself.
|
||||
|
||||
TOP = ..\..\..
|
||||
|
|
@ -33,7 +33,7 @@ all : \
|
|||
demos.h \
|
||||
gtk-demo.exe
|
||||
|
||||
## These should be in the order you want them to appear in the
|
||||
## These should be in the order you want them to appear in the
|
||||
## demo app, which means alphabetized by demo title, not filename
|
||||
DEMOS = \
|
||||
appwindow.c \
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ change_orientation (GtkWidget *button,
|
|||
gtk_container_add (GTK_CONTAINER (box), menubar);
|
||||
gtk_box_reorder_child (GTK_BOX (box), menubar, 0);
|
||||
g_object_unref (menubar);
|
||||
g_object_set (menubar,
|
||||
g_object_set (menubar,
|
||||
"pack-direction", GTK_PACK_DIRECTION_TTB,
|
||||
NULL);
|
||||
}
|
||||
|
|
@ -111,7 +111,7 @@ change_orientation (GtkWidget *button,
|
|||
gtk_container_add (GTK_CONTAINER (box), menubar);
|
||||
gtk_box_reorder_child (GTK_BOX (box), menubar, 0);
|
||||
g_object_unref (menubar);
|
||||
g_object_set (menubar,
|
||||
g_object_set (menubar,
|
||||
"pack-direction", GTK_PACK_DIRECTION_LTR,
|
||||
NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ gtk_rotated_bin_realize (GtkWidget *widget)
|
|||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
|
||||
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
|
||||
|
||||
|
||||
gdk_window = gdk_window_new (gtk_widget_get_parent_window (widget), &attributes, attributes_mask);
|
||||
gtk_widget_set_window (widget, gdk_window);
|
||||
gdk_window_set_user_data (gdk_window, widget);
|
||||
|
|
@ -384,9 +384,9 @@ gtk_rotated_bin_size_request (GtkWidget *widget,
|
|||
gint border_width;
|
||||
double s, c;
|
||||
double w, h;
|
||||
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
|
||||
|
||||
child_requisition.width = 0;
|
||||
child_requisition.height = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ gtk_mirror_bin_realize (GtkWidget *widget)
|
|||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
|
||||
attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
|
||||
|
||||
|
||||
gdk_window = gdk_window_new (gtk_widget_get_parent_window (widget),
|
||||
&attributes, attributes_mask);
|
||||
gtk_widget_set_window (widget, gdk_window);
|
||||
|
|
@ -309,7 +309,7 @@ gtk_mirror_bin_size_request (GtkWidget *widget,
|
|||
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
|
||||
GtkRequisition child_requisition;
|
||||
gint border_width;
|
||||
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
|
||||
child_requisition.width = 0;
|
||||
|
|
@ -329,7 +329,7 @@ gtk_mirror_bin_size_allocate (GtkWidget *widget,
|
|||
GtkMirrorBin *bin = GTK_MIRROR_BIN (widget);
|
||||
gint border_width;
|
||||
gint w, h;
|
||||
|
||||
|
||||
gtk_widget_set_allocation (widget, allocation);
|
||||
|
||||
border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
|
||||
|
|
|
|||
|
|
@ -63,26 +63,26 @@ create_pane_options (GtkPaned *paned,
|
|||
GtkWidget *check_button;
|
||||
GtkWidget *child1;
|
||||
GtkWidget *child2;
|
||||
|
||||
|
||||
child1 = gtk_paned_get_child1 (paned);
|
||||
child2 = gtk_paned_get_child2 (paned);
|
||||
|
||||
|
||||
frame = gtk_frame_new (frame_label);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (frame), 4);
|
||||
|
||||
|
||||
table = gtk_table_new (3, 2, TRUE);
|
||||
gtk_container_add (GTK_CONTAINER (frame), table);
|
||||
|
||||
|
||||
label = gtk_label_new (label1);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label,
|
||||
0, 1, 0, 1);
|
||||
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Resize");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
0, 1, 1, 2);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_resize), child1);
|
||||
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
0, 1, 2, 3);
|
||||
|
|
@ -90,11 +90,11 @@ create_pane_options (GtkPaned *paned,
|
|||
TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_shrink), child1);
|
||||
|
||||
|
||||
label = gtk_label_new (label2);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label,
|
||||
1, 2, 0, 1);
|
||||
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Resize");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
1, 2, 1, 2);
|
||||
|
|
@ -102,7 +102,7 @@ create_pane_options (GtkPaned *paned,
|
|||
TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_resize), child2);
|
||||
|
||||
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Shrink");
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), check_button,
|
||||
1, 2, 2, 3);
|
||||
|
|
@ -138,7 +138,7 @@ do_panes (GtkWidget *do_widget)
|
|||
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
|
||||
vpaned = gtk_vpaned_new ();
|
||||
gtk_box_pack_start (GTK_BOX (vbox), vpaned, TRUE, TRUE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER(vpaned), 5);
|
||||
|
|
@ -150,7 +150,7 @@ do_panes (GtkWidget *do_widget)
|
|||
gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_IN);
|
||||
gtk_widget_set_size_request (frame, 60, 60);
|
||||
gtk_paned_add1 (GTK_PANED (hpaned), frame);
|
||||
|
||||
|
||||
button = gtk_button_new_with_mnemonic ("_Hi there");
|
||||
gtk_container_add (GTK_CONTAINER(frame), button);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* Pickers
|
||||
/* Pickers
|
||||
*
|
||||
* These widgets are mainly intended for use in preference dialogs.
|
||||
* They allow to select colors, fonts, files and directories.
|
||||
|
|
@ -18,14 +18,14 @@ do_pickers (GtkWidget *do_widget)
|
|||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Pickers");
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
&window);
|
||||
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
table = gtk_table_new (4, 2, FALSE);
|
||||
table = gtk_table_new (4, 2, FALSE);
|
||||
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 10);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 3);
|
||||
gtk_container_add (GTK_CONTAINER (window), table);
|
||||
|
|
@ -46,14 +46,14 @@ do_pickers (GtkWidget *do_widget)
|
|||
|
||||
label = gtk_label_new ("File:");
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
picker = gtk_file_chooser_button_new ("Pick a File",
|
||||
picker = gtk_file_chooser_button_new ("Pick a File",
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 2, 3);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 2, 3);
|
||||
|
||||
label = gtk_label_new ("Folder:");
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
picker = gtk_file_chooser_button_new ("Pick a Folder",
|
||||
picker = gtk_file_chooser_button_new ("Pick a Folder",
|
||||
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 1, 3, 4);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table), picker, 1, 2, 3, 4);
|
||||
|
|
@ -64,7 +64,7 @@ do_pickers (GtkWidget *do_widget)
|
|||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ load_pixbufs (GError **error)
|
|||
|
||||
background = gdk_pixbuf_new_from_file (filename, error);
|
||||
g_free (filename);
|
||||
|
||||
|
||||
if (!background)
|
||||
return FALSE; /* Note that "error" was filled with a GError */
|
||||
|
||||
|
|
@ -83,10 +83,10 @@ load_pixbufs (GError **error)
|
|||
filename = demo_find_file (image_names[i], error);
|
||||
if (!filename)
|
||||
return FALSE; /* Note that "error" was filled with a GError */
|
||||
|
||||
|
||||
images[i] = gdk_pixbuf_new_from_file (filename, error);
|
||||
g_free (filename);
|
||||
|
||||
|
||||
if (!images[i])
|
||||
return FALSE; /* Note that "error" was filled with a GError */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ create_fancy_attr_list_for_layout (PangoLayout *layout)
|
|||
for (p = text; (p = strstr (p, HEART)); p += strlen (HEART))
|
||||
{
|
||||
PangoAttribute *attr;
|
||||
|
||||
|
||||
attr = pango_attr_shape_new_with_data (&ink_rect,
|
||||
&logical_rect,
|
||||
GUINT_TO_POINTER (g_utf8_get_char (p)),
|
||||
|
|
@ -111,7 +111,7 @@ rotated_text_expose_event (GtkWidget *widget,
|
|||
int width, height;
|
||||
double device_radius;
|
||||
int i;
|
||||
|
||||
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
|
||||
width = allocation.width;
|
||||
|
|
@ -157,7 +157,7 @@ rotated_text_expose_event (GtkWidget *widget,
|
|||
|
||||
/* Inform Pango to re-layout the text with the new transformation matrix */
|
||||
pango_cairo_update_layout (cr, layout);
|
||||
|
||||
|
||||
pango_layout_get_pixel_size (layout, &width, &height);
|
||||
cairo_move_to (cr, - width / 2, - RADIUS * .9);
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
|
|
@ -172,7 +172,7 @@ rotated_text_expose_event (GtkWidget *widget,
|
|||
g_object_unref (context);
|
||||
cairo_pattern_destroy (pattern);
|
||||
cairo_destroy (cr);
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -188,7 +188,7 @@ do_rotated_text (GtkWidget *do_widget)
|
|||
PangoAttrList *attrs;
|
||||
|
||||
const GdkColor white = { 0, 0xffff, 0xffff, 0xffff };
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
*
|
||||
* GtkSizeGroup provides a mechanism for grouping a number of
|
||||
* widgets together so they all request the same amount of space.
|
||||
* This is typically useful when you want a column of widgets to
|
||||
* This is typically useful when you want a column of widgets to
|
||||
* have the same size, but you can't use a GtkTable widget.
|
||||
*
|
||||
*
|
||||
* Note that size groups only affect the amount of space requested,
|
||||
* not the size that the widgets finally receive. If you want the
|
||||
* widgets in a GtkSizeGroup to actually be the same size, you need
|
||||
|
|
@ -26,7 +26,7 @@ create_combo_box (const char **strings)
|
|||
const char **str;
|
||||
|
||||
combo_box = gtk_combo_box_text_new ();
|
||||
|
||||
|
||||
for (str = strings; *str; str++)
|
||||
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), *str);
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ add_row (GtkTable *table,
|
|||
0, 1, row, row + 1,
|
||||
GTK_EXPAND | GTK_FILL, 0,
|
||||
0, 0);
|
||||
|
||||
|
||||
combo_box = create_combo_box (options);
|
||||
gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo_box);
|
||||
gtk_size_group_add_widget (size_group, combo_box);
|
||||
|
|
@ -75,7 +75,7 @@ toggle_grouping (GtkToggleButton *check_button,
|
|||
new_mode = GTK_SIZE_GROUP_HORIZONTAL;
|
||||
else
|
||||
new_mode = GTK_SIZE_GROUP_NONE;
|
||||
|
||||
|
||||
gtk_size_group_set_mode (size_group, new_mode);
|
||||
}
|
||||
|
||||
|
|
@ -91,15 +91,15 @@ do_sizegroup (GtkWidget *do_widget)
|
|||
static const char *color_options[] = {
|
||||
"Red", "Green", "Blue", NULL
|
||||
};
|
||||
|
||||
|
||||
static const char *dash_options[] = {
|
||||
"Solid", "Dashed", "Dotted", NULL
|
||||
};
|
||||
|
||||
|
||||
static const char *end_options[] = {
|
||||
"Square", "Round", "Arrow", NULL
|
||||
};
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
window = gtk_dialog_new_with_buttons ("GtkSizeGroup",
|
||||
|
|
@ -109,7 +109,7 @@ do_sizegroup (GtkWidget *do_widget)
|
|||
GTK_RESPONSE_NONE,
|
||||
NULL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
|
||||
|
||||
|
||||
g_signal_connect (window, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
|
|
@ -120,7 +120,7 @@ do_sizegroup (GtkWidget *do_widget)
|
|||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
||||
size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
|
||||
|
||||
|
||||
/* Create one frame holding color options
|
||||
*/
|
||||
frame = gtk_frame_new ("Color Options");
|
||||
|
|
@ -152,7 +152,7 @@ do_sizegroup (GtkWidget *do_widget)
|
|||
/* And a check button to turn grouping on and off */
|
||||
check_button = gtk_check_button_new_with_mnemonic ("_Enable grouping");
|
||||
gtk_box_pack_start (GTK_BOX (vbox), check_button, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button), TRUE);
|
||||
g_signal_connect (check_button, "toggled",
|
||||
G_CALLBACK (toggle_grouping), size_group);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ stock_item_info_free (StockItemInfo *info)
|
|||
g_free (info->accel_str);
|
||||
if (info->small_icon)
|
||||
g_object_unref (info->small_icon);
|
||||
|
||||
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ stock_item_info_copy (StockItemInfo *src)
|
|||
info->id = g_strdup (src->id);
|
||||
info->macro = g_strdup (src->macro);
|
||||
info->accel_str = g_strdup (src->accel_str);
|
||||
|
||||
|
||||
info->item = src->item;
|
||||
|
||||
info->small_icon = src->small_icon;
|
||||
|
|
@ -62,7 +62,7 @@ static GType
|
|||
stock_item_info_get_type (void)
|
||||
{
|
||||
static GType our_type = 0;
|
||||
|
||||
|
||||
if (our_type == 0)
|
||||
our_type = g_boxed_type_register_static ("StockItemInfo",
|
||||
(GBoxedCopyFunc) stock_item_info_copy,
|
||||
|
|
@ -90,9 +90,9 @@ id_to_macro (const gchar *id)
|
|||
/* gtk-foo-bar -> GTK_STOCK_FOO_BAR */
|
||||
|
||||
macro = g_string_new (NULL);
|
||||
|
||||
|
||||
cp = id;
|
||||
|
||||
|
||||
if (strncmp (cp, "gtk-", 4) == 0)
|
||||
{
|
||||
g_string_append (macro, "GTK_STOCK_");
|
||||
|
|
@ -120,7 +120,7 @@ create_model (void)
|
|||
GtkListStore *store;
|
||||
GSList *ids;
|
||||
GSList *tmp_list;
|
||||
|
||||
|
||||
store = gtk_list_store_new (2, STOCK_ITEM_INFO_TYPE, G_TYPE_STRING);
|
||||
|
||||
ids = gtk_stock_list_ids ();
|
||||
|
|
@ -132,9 +132,9 @@ create_model (void)
|
|||
GtkStockItem item;
|
||||
GtkTreeIter iter;
|
||||
GtkIconSet *icon_set;
|
||||
|
||||
|
||||
info.id = tmp_list->data;
|
||||
|
||||
|
||||
if (gtk_stock_lookup (info.id, &item))
|
||||
{
|
||||
info.item = item;
|
||||
|
|
@ -173,19 +173,19 @@ create_model (void)
|
|||
++i;
|
||||
}
|
||||
g_free (sizes);
|
||||
|
||||
|
||||
info.small_icon = gtk_widget_render_icon (window, info.id,
|
||||
size,
|
||||
NULL);
|
||||
|
||||
|
||||
if (size != GTK_ICON_SIZE_MENU)
|
||||
{
|
||||
/* Make the result the proper size for our thumbnail */
|
||||
gint w, h;
|
||||
GdkPixbuf *scaled;
|
||||
|
||||
|
||||
gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &w, &h);
|
||||
|
||||
|
||||
scaled = gdk_pixbuf_scale_simple (info.small_icon,
|
||||
w, h,
|
||||
GDK_INTERP_BILINEAR);
|
||||
|
|
@ -208,7 +208,7 @@ create_model (void)
|
|||
}
|
||||
|
||||
info.macro = id_to_macro (info.id);
|
||||
|
||||
|
||||
gtk_list_store_append (store, &iter);
|
||||
gtk_list_store_set (store, &iter, 0, &info, 1, info.id, -1);
|
||||
|
||||
|
|
@ -216,10 +216,10 @@ create_model (void)
|
|||
g_free (info.accel_str);
|
||||
if (info.small_icon)
|
||||
g_object_unref (info.small_icon);
|
||||
|
||||
|
||||
tmp_list = g_slist_next (tmp_list);
|
||||
}
|
||||
|
||||
|
||||
g_slist_foreach (ids, (GFunc)g_free, NULL);
|
||||
g_slist_free (ids);
|
||||
|
||||
|
|
@ -243,7 +243,7 @@ get_largest_size (const char *id)
|
|||
for (i = 0; i < n_sizes; i++)
|
||||
{
|
||||
gint width, height;
|
||||
|
||||
|
||||
gtk_icon_size_lookup (sizes[i], &width, &height);
|
||||
|
||||
if (width * height > best_pixels)
|
||||
|
|
@ -252,7 +252,7 @@ get_largest_size (const char *id)
|
|||
best_pixels = width * height;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
g_free (sizes);
|
||||
|
||||
return best_size;
|
||||
|
|
@ -265,7 +265,7 @@ selection_changed (GtkTreeSelection *selection)
|
|||
StockItemDisplay *display;
|
||||
GtkTreeModel *model;
|
||||
GtkTreeIter iter;
|
||||
|
||||
|
||||
treeview = gtk_tree_selection_get_tree_view (selection);
|
||||
display = g_object_get_data (G_OBJECT (treeview), "stock-display");
|
||||
|
||||
|
|
@ -273,7 +273,7 @@ selection_changed (GtkTreeSelection *selection)
|
|||
{
|
||||
StockItemInfo *info;
|
||||
gchar *str;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, &iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
|
@ -327,15 +327,15 @@ macro_set_func_text (GtkTreeViewColumn *tree_column,
|
|||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->macro,
|
||||
NULL);
|
||||
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
|
|
@ -347,15 +347,15 @@ id_set_func (GtkTreeViewColumn *tree_column,
|
|||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->id,
|
||||
NULL);
|
||||
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
|
|
@ -367,15 +367,15 @@ accel_set_func (GtkTreeViewColumn *tree_column,
|
|||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->accel_str,
|
||||
NULL);
|
||||
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
|
|
@ -387,21 +387,21 @@ label_set_func (GtkTreeViewColumn *tree_column,
|
|||
gpointer data)
|
||||
{
|
||||
StockItemInfo *info;
|
||||
|
||||
|
||||
gtk_tree_model_get (model, iter,
|
||||
0, &info,
|
||||
-1);
|
||||
|
||||
|
||||
g_object_set (GTK_CELL_RENDERER (cell),
|
||||
"text", info->item.label,
|
||||
NULL);
|
||||
|
||||
|
||||
stock_item_info_free (info);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
do_stock_browser (GtkWidget *do_widget)
|
||||
{
|
||||
{
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *frame;
|
||||
|
|
@ -435,13 +435,13 @@ do_stock_browser (GtkWidget *do_widget)
|
|||
gtk_box_pack_start (GTK_BOX (hbox), sw, FALSE, FALSE, 0);
|
||||
|
||||
model = create_model ();
|
||||
|
||||
|
||||
treeview = gtk_tree_view_new_with_model (model);
|
||||
|
||||
g_object_unref (model);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (sw), treeview);
|
||||
|
||||
|
||||
column = gtk_tree_view_column_new ();
|
||||
gtk_tree_view_column_set_title (column, "Macro");
|
||||
|
||||
|
|
@ -487,10 +487,10 @@ do_stock_browser (GtkWidget *do_widget)
|
|||
id_set_func,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
|
||||
align = gtk_alignment_new (0.5, 0.0, 0.0, 0.0);
|
||||
gtk_box_pack_end (GTK_BOX (hbox), align, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new ("Selected Item");
|
||||
gtk_container_add (GTK_CONTAINER (align), frame);
|
||||
|
||||
|
|
@ -503,7 +503,7 @@ do_stock_browser (GtkWidget *do_widget)
|
|||
"stock-display",
|
||||
display,
|
||||
g_free); /* free display with treeview */
|
||||
|
||||
|
||||
display->type_label = gtk_label_new (NULL);
|
||||
display->macro_label = gtk_label_new (NULL);
|
||||
display->id_label = gtk_label_new (NULL);
|
||||
|
|
@ -515,7 +515,7 @@ do_stock_browser (GtkWidget *do_widget)
|
|||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->icon_image,
|
||||
FALSE, FALSE, 0);
|
||||
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->label_accel_label,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), display->macro_label,
|
||||
|
|
@ -525,7 +525,7 @@ do_stock_browser (GtkWidget *do_widget)
|
|||
|
||||
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
|
||||
gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
|
||||
|
||||
|
||||
g_signal_connect (selection,
|
||||
"changed",
|
||||
G_CALLBACK (selection_changed),
|
||||
|
|
@ -537,7 +537,7 @@ do_stock_browser (GtkWidget *do_widget)
|
|||
gtk_widget_show_all (window);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
gtk_widget_destroy (window);
|
||||
window = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/* Text Widget/Automatic scrolling
|
||||
*
|
||||
* This example demonstrates how to use the gravity of
|
||||
* This example demonstrates how to use the gravity of
|
||||
* GtkTextMarks to keep a text view scrolled to the bottom
|
||||
* while appending text.
|
||||
*/
|
||||
|
|
@ -20,14 +20,14 @@ scroll_to_end (GtkTextView *textview)
|
|||
static int count;
|
||||
|
||||
buffer = gtk_text_view_get_buffer (textview);
|
||||
|
||||
/* Get "end" mark. It's located at the end of buffer because
|
||||
|
||||
/* Get "end" mark. It's located at the end of buffer because
|
||||
* of right gravity
|
||||
*/
|
||||
mark = gtk_text_buffer_get_mark (buffer, "end");
|
||||
gtk_text_buffer_get_iter_at_mark (buffer, &iter, mark);
|
||||
|
||||
/* and insert some text at its position, the iter will be
|
||||
/* and insert some text at its position, the iter will be
|
||||
* revalidated after insertion to point to the end of inserted text
|
||||
*/
|
||||
spaces = g_strnfill (count++, ' ');
|
||||
|
|
@ -43,7 +43,7 @@ scroll_to_end (GtkTextView *textview)
|
|||
*/
|
||||
gtk_text_view_scroll_mark_onscreen (textview, mark);
|
||||
|
||||
/* Emulate typewriter behavior, shift to the left if we
|
||||
/* Emulate typewriter behavior, shift to the left if we
|
||||
* are far enough to the right.
|
||||
*/
|
||||
if (count > 150)
|
||||
|
|
@ -64,7 +64,7 @@ scroll_to_bottom (GtkTextView *textview)
|
|||
static int count;
|
||||
|
||||
buffer = gtk_text_view_get_buffer (textview);
|
||||
|
||||
|
||||
/* Get end iterator */
|
||||
gtk_text_buffer_get_end_iter (buffer, &iter);
|
||||
|
||||
|
|
@ -80,17 +80,17 @@ scroll_to_bottom (GtkTextView *textview)
|
|||
-1);
|
||||
g_free (spaces);
|
||||
|
||||
/* Move the iterator to the beginning of line, so we don't scroll
|
||||
* in horizontal direction
|
||||
/* Move the iterator to the beginning of line, so we don't scroll
|
||||
* in horizontal direction
|
||||
*/
|
||||
gtk_text_iter_set_line_offset (&iter, 0);
|
||||
|
||||
|
||||
/* and place the mark at iter. the mark will stay there after we
|
||||
* insert some text at the end because it has right gravity.
|
||||
*/
|
||||
mark = gtk_text_buffer_get_mark (buffer, "scroll");
|
||||
gtk_text_buffer_move_mark (buffer, mark, &iter);
|
||||
|
||||
|
||||
/* Scroll the mark onscreen.
|
||||
*/
|
||||
gtk_text_view_scroll_mark_onscreen (textview, mark);
|
||||
|
|
@ -116,25 +116,25 @@ setup_scroll (GtkTextView *textview,
|
|||
if (to_end)
|
||||
{
|
||||
/* If we want to scroll to the end, including horizontal scrolling,
|
||||
* then we just create a mark with right gravity at the end of the
|
||||
* buffer. It will stay at the end unless explicitely moved with
|
||||
* then we just create a mark with right gravity at the end of the
|
||||
* buffer. It will stay at the end unless explicitely moved with
|
||||
* gtk_text_buffer_move_mark.
|
||||
*/
|
||||
gtk_text_buffer_create_mark (buffer, "end", &iter, FALSE);
|
||||
|
||||
|
||||
/* Add scrolling timeout. */
|
||||
return g_timeout_add (50, (GSourceFunc) scroll_to_end, textview);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If we want to scroll to the bottom, but not scroll horizontally,
|
||||
* then an end mark won't do the job. Just create a mark so we can
|
||||
/* If we want to scroll to the bottom, but not scroll horizontally,
|
||||
* then an end mark won't do the job. Just create a mark so we can
|
||||
* use it with gtk_text_view_scroll_mark_onscreen, we'll position it
|
||||
* explicitely when needed. Use left gravity so the mark stays where
|
||||
* explicitely when needed. Use left gravity so the mark stays where
|
||||
* we put it after inserting new text.
|
||||
*/
|
||||
gtk_text_buffer_create_mark (buffer, "scroll", &iter, TRUE);
|
||||
|
||||
|
||||
/* Add scrolling timeout. */
|
||||
return g_timeout_add (100, (GSourceFunc) scroll_to_bottom, textview);
|
||||
}
|
||||
|
|
@ -163,7 +163,7 @@ create_text_view (GtkWidget *hbox,
|
|||
timeout = setup_scroll (GTK_TEXT_VIEW (textview), to_end);
|
||||
|
||||
/* Remove the timeout in destroy handler, so we don't try to
|
||||
* scroll destroyed widget.
|
||||
* scroll destroyed widget.
|
||||
*/
|
||||
g_signal_connect (textview, "destroy",
|
||||
G_CALLBACK (remove_timeout),
|
||||
|
|
@ -183,7 +183,7 @@ do_textscroll (GtkWidget *do_widget)
|
|||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||
|
||||
|
||||
hbox = gtk_hbox_new (TRUE, 6);
|
||||
gtk_container_add (GTK_CONTAINER (window), hbox);
|
||||
|
||||
|
|
|
|||
|
|
@ -40,13 +40,13 @@ create_tags (GtkTextBuffer *buffer)
|
|||
"weight", PANGO_WEIGHT_BOLD,
|
||||
"size", 15 * PANGO_SCALE,
|
||||
NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "italic",
|
||||
"style", PANGO_STYLE_ITALIC, NULL);
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "bold",
|
||||
"weight", PANGO_WEIGHT_BOLD, NULL);
|
||||
|
||||
"weight", PANGO_WEIGHT_BOLD, NULL);
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "big",
|
||||
/* points times the PANGO_SCALE factor */
|
||||
"size", 20 * PANGO_SCALE, NULL);
|
||||
|
|
@ -56,12 +56,12 @@ create_tags (GtkTextBuffer *buffer)
|
|||
|
||||
gtk_text_buffer_create_tag (buffer, "x-large",
|
||||
"scale", PANGO_SCALE_X_LARGE, NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "monospace",
|
||||
"family", "monospace", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "blue_foreground",
|
||||
"foreground", "blue", NULL);
|
||||
"foreground", "blue", NULL);
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "red_background",
|
||||
"background", "red", NULL);
|
||||
|
|
@ -77,7 +77,7 @@ create_tags (GtkTextBuffer *buffer)
|
|||
|
||||
gtk_text_buffer_create_tag (buffer, "not_editable",
|
||||
"editable", FALSE, NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "word_wrap",
|
||||
"wrap_mode", GTK_WRAP_WORD, NULL);
|
||||
|
||||
|
|
@ -86,7 +86,7 @@ create_tags (GtkTextBuffer *buffer)
|
|||
|
||||
gtk_text_buffer_create_tag (buffer, "no_wrap",
|
||||
"wrap_mode", GTK_WRAP_NONE, NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "center",
|
||||
"justification", GTK_JUSTIFY_CENTER, NULL);
|
||||
|
||||
|
|
@ -96,10 +96,10 @@ create_tags (GtkTextBuffer *buffer)
|
|||
gtk_text_buffer_create_tag (buffer, "wide_margins",
|
||||
"left_margin", 50, "right_margin", 50,
|
||||
NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "strikethrough",
|
||||
"strikethrough", TRUE, NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "underline",
|
||||
"underline", PANGO_UNDERLINE_SINGLE, NULL);
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ create_tags (GtkTextBuffer *buffer)
|
|||
"rise", 10 * PANGO_SCALE, /* 10 pixels */
|
||||
"size", 8 * PANGO_SCALE, /* 8 points */
|
||||
NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_create_tag (buffer, "subscript",
|
||||
"rise", -10 * PANGO_SCALE, /* 10 pixels */
|
||||
"size", 8 * PANGO_SCALE, /* 8 points */
|
||||
|
|
@ -155,7 +155,7 @@ insert_text (GtkTextBuffer *buffer)
|
|||
scaled = gdk_pixbuf_scale_simple (pixbuf, 32, 32, GDK_INTERP_BILINEAR);
|
||||
g_object_unref (pixbuf);
|
||||
pixbuf = scaled;
|
||||
|
||||
|
||||
/* get start of buffer; each insertion will revalidate the
|
||||
* iterator to point to just after the inserted text.
|
||||
*/
|
||||
|
|
@ -165,12 +165,12 @@ insert_text (GtkTextBuffer *buffer)
|
|||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Font styles. ", -1,
|
||||
"heading", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, "For example, you can have ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"italic", -1,
|
||||
"italic", NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, ", ", -1);
|
||||
gtk_text_buffer_insert (buffer, &iter, ", ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"bold", -1,
|
||||
"bold", NULL);
|
||||
|
|
@ -192,29 +192,29 @@ insert_text (GtkTextBuffer *buffer)
|
|||
"x-large", -1,
|
||||
"x-large", NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " to ensure that your program properly adapts if the user changes the default font size.\n\n", -1);
|
||||
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Colors. ", -1,
|
||||
"heading", NULL);
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, "Colors such as ", -1);
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, "Colors such as ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"a blue foreground", -1,
|
||||
"blue_foreground", NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " or ", -1);
|
||||
gtk_text_buffer_insert (buffer, &iter, " or ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"a red background", -1,
|
||||
"red_background", NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " or even ", -1);
|
||||
gtk_text_buffer_insert (buffer, &iter, " or even ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"a blue foreground on red background", -1,
|
||||
"blue_foreground",
|
||||
"red_background",
|
||||
NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, " (select that to read it) can be used.\n\n", -1);
|
||||
gtk_text_buffer_insert (buffer, &iter, " (select that to read it) can be used.\n\n", -1);
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Underline, strikethrough, and rise. ", -1,
|
||||
"heading", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"Strikethrough", -1,
|
||||
"strikethrough", NULL);
|
||||
|
|
@ -224,7 +224,7 @@ insert_text (GtkTextBuffer *buffer)
|
|||
"underline", NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, ", ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"double underline", -1,
|
||||
"double underline", -1,
|
||||
"double_underline", NULL);
|
||||
gtk_text_buffer_insert (buffer, &iter, ", ", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
|
|
@ -238,7 +238,7 @@ insert_text (GtkTextBuffer *buffer)
|
|||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Images. ", -1,
|
||||
"heading", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, "The buffer can have images in it: ", -1);
|
||||
gtk_text_buffer_insert_pixbuf (buffer, &iter, pixbuf);
|
||||
gtk_text_buffer_insert_pixbuf (buffer, &iter, pixbuf);
|
||||
|
|
@ -249,14 +249,14 @@ insert_text (GtkTextBuffer *buffer)
|
|||
"heading", NULL);
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, "You can adjust the amount of space before each line.\n", -1);
|
||||
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"This line has a whole lot of space before it.\n", -1,
|
||||
"big_gap_before_line", "wide_margins", NULL);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"You can also adjust the amount of space after each line; this line has a whole lot of space after it.\n", -1,
|
||||
"big_gap_after_line", "wide_margins", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"You can also adjust the amount of space between wrapped lines; this line has extra space between each wrapped line in the same paragraph. To show off wrapping, some filler text: the quick brown fox jumped over the lazy dog. Blah blah blah blah blah blah blah blah blah.\n", -1,
|
||||
"double_spaced_line", "wide_margins", NULL);
|
||||
|
|
@ -265,7 +265,7 @@ insert_text (GtkTextBuffer *buffer)
|
|||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Editability. ", -1,
|
||||
"heading", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"This line is 'locked down' and can't be edited by the user - just try it! You can't delete this line.\n\n", -1,
|
||||
"not_editable", NULL);
|
||||
|
|
@ -274,19 +274,19 @@ insert_text (GtkTextBuffer *buffer)
|
|||
"heading", NULL);
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
"This line (and most of the others in this buffer) is word-wrapped, using the proper Unicode algorithm. Word wrap should work in all scripts and languages that GTK+ supports. Let's make this a long paragraph to demonstrate: blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah\n\n", -1);
|
||||
|
||||
"This line (and most of the others in this buffer) is word-wrapped, using the proper Unicode algorithm. Word wrap should work in all scripts and languages that GTK+ supports. Let's make this a long paragraph to demonstrate: blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah\n\n", -1);
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"This line has character-based wrapping, and can wrap between any two character glyphs. Let's make this a long paragraph to demonstrate: blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah\n\n", -1,
|
||||
"char_wrap", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"This line has all wrapping turned off, so it makes the horizontal scrollbar appear.\n\n\n", -1,
|
||||
"no_wrap", NULL);
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Justification. ", -1,
|
||||
"heading", NULL);
|
||||
|
||||
"heading", NULL);
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"\nThis line has center justification.\n", -1,
|
||||
"center", NULL);
|
||||
|
|
@ -297,18 +297,18 @@ insert_text (GtkTextBuffer *buffer)
|
|||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter,
|
||||
"\nThis line has big wide margins. Text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text.\n", -1,
|
||||
"wide_margins", NULL);
|
||||
"wide_margins", NULL);
|
||||
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "Internationalization. ", -1,
|
||||
"heading", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
"You can put all sorts of Unicode text in the buffer.\n\nGerman (Deutsch S\303\274d) Gr\303\274\303\237 Gott\nGreek (\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254) \316\223\316\265\316\271\316\254 \317\203\316\261\317\202\nHebrew \327\251\327\234\327\225\327\235\nJapanese (\346\227\245\346\234\254\350\252\236)\n\nThe widget properly handles bidirectional text, word wrapping, DOS/UNIX/Unicode paragraph separators, grapheme boundaries, and so on using the Pango internationalization framework.\n", -1);
|
||||
"You can put all sorts of Unicode text in the buffer.\n\nGerman (Deutsch S\303\274d) Gr\303\274\303\237 Gott\nGreek (\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254) \316\223\316\265\316\271\316\254 \317\203\316\261\317\202\nHebrew \327\251\327\234\327\225\327\235\nJapanese (\346\227\245\346\234\254\350\252\236)\n\nThe widget properly handles bidirectional text, word wrapping, DOS/UNIX/Unicode paragraph separators, grapheme boundaries, and so on using the Pango internationalization framework.\n", -1);
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, "Here's a word-wrapped quote in a right-to-left language:\n", -1);
|
||||
gtk_text_buffer_insert_with_tags_by_name (buffer, &iter, "\331\210\331\202\330\257 \330\250\330\257\330\243 \330\253\331\204\330\247\330\253 \331\205\331\206 \330\243\331\203\330\253\330\261 \330\247\331\204\331\205\330\244\330\263\330\263\330\247\330\252 \330\252\331\202\330\257\331\205\330\247 \331\201\331\212 \330\264\330\250\331\203\330\251 \330\247\331\203\330\263\331\212\331\210\331\206 \330\250\330\261\330\247\331\205\330\254\331\207\330\247 \331\203\331\205\331\206\330\270\331\205\330\247\330\252 \331\204\330\247 \330\252\330\263\330\271\331\211 \331\204\331\204\330\261\330\250\330\255\330\214 \330\253\331\205 \330\252\330\255\331\210\331\204\330\252 \331\201\331\212 \330\247\331\204\330\263\331\206\331\210\330\247\330\252 \330\247\331\204\330\256\331\205\330\263 \330\247\331\204\331\205\330\247\330\266\331\212\330\251 \330\245\331\204\331\211 \331\205\330\244\330\263\330\263\330\247\330\252 \331\205\330\247\331\204\331\212\330\251 \331\205\331\206\330\270\331\205\330\251\330\214 \331\210\330\250\330\247\330\252\330\252 \330\254\330\262\330\241\330\247 \331\205\331\206 \330\247\331\204\331\206\330\270\330\247\331\205 \330\247\331\204\331\205\330\247\331\204\331\212 \331\201\331\212 \330\250\331\204\330\257\330\247\331\206\331\207\330\247\330\214 \331\210\331\204\331\203\331\206\331\207\330\247 \330\252\330\252\330\256\330\265\330\265 \331\201\331\212 \330\256\330\257\331\205\330\251 \331\202\330\267\330\247\330\271 \330\247\331\204\331\205\330\264\330\261\331\210\330\271\330\247\330\252 \330\247\331\204\330\265\330\272\331\212\330\261\330\251. \331\210\330\243\330\255\330\257 \330\243\331\203\330\253\330\261 \331\207\330\260\331\207 \330\247\331\204\331\205\330\244\330\263\330\263\330\247\330\252 \331\206\330\254\330\247\330\255\330\247 \331\207\331\210 \302\273\330\250\330\247\331\206\331\203\331\210\330\263\331\210\331\204\302\253 \331\201\331\212 \330\250\331\210\331\204\331\212\331\201\331\212\330\247.\n\n", -1,
|
||||
"rtl_quote", NULL);
|
||||
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, "You can put widgets in the buffer: Here's a button: ", -1);
|
||||
gtk_text_buffer_create_child_anchor (buffer, &iter);
|
||||
gtk_text_buffer_insert (buffer, &iter, " and a menu: ", -1);
|
||||
|
|
@ -320,7 +320,7 @@ insert_text (GtkTextBuffer *buffer)
|
|||
gtk_text_buffer_insert (buffer, &iter, " finally a text entry: ", -1);
|
||||
gtk_text_buffer_create_child_anchor (buffer, &iter);
|
||||
gtk_text_buffer_insert (buffer, &iter, ".\n", -1);
|
||||
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter, "\n\nThis demo doesn't demonstrate all the GtkTextBuffer features; it leaves out, for example: invisible/hidden text, tab stops, application-drawn areas on the sides of the widget for displaying breakpoints and such...", -1);
|
||||
|
||||
/* Apply word_wrap tag to whole buffer */
|
||||
|
|
@ -347,7 +347,7 @@ attach_widgets (GtkTextView *text_view)
|
|||
GtkTextIter iter;
|
||||
GtkTextBuffer *buffer;
|
||||
int i;
|
||||
|
||||
|
||||
buffer = gtk_text_view_get_buffer (text_view);
|
||||
|
||||
gtk_text_buffer_get_start_iter (buffer, &iter);
|
||||
|
|
@ -357,7 +357,7 @@ attach_widgets (GtkTextView *text_view)
|
|||
{
|
||||
GtkTextChildAnchor *anchor;
|
||||
GtkWidget *widget;
|
||||
|
||||
|
||||
anchor = gtk_text_iter_get_child_anchor (&iter);
|
||||
|
||||
if (i == 0)
|
||||
|
|
@ -420,13 +420,13 @@ do_textview (GtkWidget *do_widget)
|
|||
GtkWidget *view2;
|
||||
GtkWidget *sw;
|
||||
GtkTextBuffer *buffer;
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
450, 450);
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
|
||||
|
|
@ -445,7 +445,7 @@ do_textview (GtkWidget *do_widget)
|
|||
view1 = gtk_text_view_new ();
|
||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view1));
|
||||
view2 = gtk_text_view_new_with_buffer (buffer);
|
||||
|
||||
|
||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
|
|
@ -467,7 +467,7 @@ do_textview (GtkWidget *do_widget)
|
|||
|
||||
attach_widgets (GTK_TEXT_VIEW (view1));
|
||||
attach_widgets (GTK_TEXT_VIEW (view2));
|
||||
|
||||
|
||||
gtk_widget_show_all (vpaned);
|
||||
}
|
||||
|
||||
|
|
@ -493,10 +493,10 @@ recursive_attach_view (int depth,
|
|||
GtkWidget *event_box;
|
||||
GdkColor color;
|
||||
GtkWidget *align;
|
||||
|
||||
|
||||
if (depth > 4)
|
||||
return;
|
||||
|
||||
|
||||
child_view = gtk_text_view_new_with_buffer (gtk_text_view_get_buffer (view));
|
||||
|
||||
/* Event box is to add a black border around each child view */
|
||||
|
|
@ -506,10 +506,10 @@ recursive_attach_view (int depth,
|
|||
|
||||
align = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (align), 1);
|
||||
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (event_box), align);
|
||||
gtk_container_add (GTK_CONTAINER (align), child_view);
|
||||
|
||||
|
||||
gtk_text_view_add_child_at_anchor (view, event_box, anchor);
|
||||
|
||||
recursive_attach_view (depth + 1, GTK_TEXT_VIEW (child_view), anchor);
|
||||
|
|
@ -532,7 +532,7 @@ easter_egg_callback (GtkWidget *button,
|
|||
gtk_window_present (GTK_WINDOW (window));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
buffer = gtk_text_buffer_new (NULL);
|
||||
|
||||
gtk_text_buffer_get_start_iter (buffer, &iter);
|
||||
|
|
@ -544,9 +544,9 @@ easter_egg_callback (GtkWidget *button,
|
|||
"\nDon't do this in real applications, please.\n", -1);
|
||||
|
||||
view = gtk_text_view_new_with_buffer (buffer);
|
||||
|
||||
|
||||
recursive_attach_view (0, GTK_TEXT_VIEW (view), anchor);
|
||||
|
||||
|
||||
g_object_unref (buffer);
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
|
|
@ -562,7 +562,7 @@ easter_egg_callback (GtkWidget *button,
|
|||
g_object_add_weak_pointer (G_OBJECT (window), window_ptr);
|
||||
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 300, 400);
|
||||
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ activate_action (GtkAction *action)
|
|||
static void
|
||||
activate_radio_action (GtkAction *action, GtkRadioAction *current)
|
||||
{
|
||||
g_message ("Radio action \"%s\" selected",
|
||||
g_message ("Radio action \"%s\" selected",
|
||||
gtk_action_get_name (GTK_ACTION (current)));
|
||||
}
|
||||
|
||||
|
|
@ -27,30 +27,30 @@ static GtkActionEntry entries[] = {
|
|||
{ "HelpMenu", NULL, "_Help" }, /* name, stock id, label */
|
||||
{ "New", GTK_STOCK_NEW, /* name, stock id */
|
||||
"_New", "<control>N", /* label, accelerator */
|
||||
"Create a new file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
"Create a new file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Open", GTK_STOCK_OPEN, /* name, stock id */
|
||||
"_Open","<control>O", /* label, accelerator */
|
||||
"_Open","<control>O", /* label, accelerator */
|
||||
"Open a file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Save", GTK_STOCK_SAVE, /* name, stock id */
|
||||
"_Save","<control>S", /* label, accelerator */
|
||||
"_Save","<control>S", /* label, accelerator */
|
||||
"Save current file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "SaveAs", GTK_STOCK_SAVE, /* name, stock id */
|
||||
"Save _As...", NULL, /* label, accelerator */
|
||||
"Save _As...", NULL, /* label, accelerator */
|
||||
"Save to a file", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Quit", GTK_STOCK_QUIT, /* name, stock id */
|
||||
"_Quit", "<control>Q", /* label, accelerator */
|
||||
"_Quit", "<control>Q", /* label, accelerator */
|
||||
"Quit", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "About", NULL, /* name, stock id */
|
||||
"_About", "<control>A", /* label, accelerator */
|
||||
"About", /* tooltip */
|
||||
"_About", "<control>A", /* label, accelerator */
|
||||
"About", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
{ "Logo", "demo-gtk-logo", /* name, stock id */
|
||||
NULL, NULL, /* label, accelerator */
|
||||
NULL, NULL, /* label, accelerator */
|
||||
"GTK+", /* tooltip */
|
||||
G_CALLBACK (activate_action) },
|
||||
};
|
||||
|
|
@ -59,9 +59,9 @@ static guint n_entries = G_N_ELEMENTS (entries);
|
|||
|
||||
static GtkToggleActionEntry toggle_entries[] = {
|
||||
{ "Bold", GTK_STOCK_BOLD, /* name, stock id */
|
||||
"_Bold", "<control>B", /* label, accelerator */
|
||||
"_Bold", "<control>B", /* label, accelerator */
|
||||
"Bold", /* tooltip */
|
||||
G_CALLBACK (activate_action),
|
||||
G_CALLBACK (activate_action),
|
||||
TRUE }, /* is_active */
|
||||
};
|
||||
static guint n_toggle_entries = G_N_ELEMENTS (toggle_entries);
|
||||
|
|
@ -74,13 +74,13 @@ enum {
|
|||
|
||||
static GtkRadioActionEntry color_entries[] = {
|
||||
{ "Red", NULL, /* name, stock id */
|
||||
"_Red", "<control>R", /* label, accelerator */
|
||||
"_Red", "<control>R", /* label, accelerator */
|
||||
"Blood", COLOR_RED }, /* tooltip, value */
|
||||
{ "Green", NULL, /* name, stock id */
|
||||
"_Green", "<control>G", /* label, accelerator */
|
||||
"_Green", "<control>G", /* label, accelerator */
|
||||
"Grass", COLOR_GREEN }, /* tooltip, value */
|
||||
{ "Blue", NULL, /* name, stock id */
|
||||
"_Blue", "<control>B", /* label, accelerator */
|
||||
"_Blue", "<control>B", /* label, accelerator */
|
||||
"Sky", COLOR_BLUE }, /* tooltip, value */
|
||||
};
|
||||
static guint n_color_entries = G_N_ELEMENTS (color_entries);
|
||||
|
|
@ -93,18 +93,18 @@ enum {
|
|||
|
||||
static GtkRadioActionEntry shape_entries[] = {
|
||||
{ "Square", NULL, /* name, stock id */
|
||||
"_Square", "<control>S", /* label, accelerator */
|
||||
"_Square", "<control>S", /* label, accelerator */
|
||||
"Square", SHAPE_SQUARE }, /* tooltip, value */
|
||||
{ "Rectangle", NULL, /* name, stock id */
|
||||
"_Rectangle", "<control>R", /* label, accelerator */
|
||||
"_Rectangle", "<control>R", /* label, accelerator */
|
||||
"Rectangle", SHAPE_RECTANGLE }, /* tooltip, value */
|
||||
{ "Oval", NULL, /* name, stock id */
|
||||
"_Oval", "<control>O", /* label, accelerator */
|
||||
"Egg", SHAPE_OVAL }, /* tooltip, value */
|
||||
"_Oval", "<control>O", /* label, accelerator */
|
||||
"Egg", SHAPE_OVAL }, /* tooltip, value */
|
||||
};
|
||||
static guint n_shape_entries = G_N_ELEMENTS (shape_entries);
|
||||
|
||||
static const gchar *ui_info =
|
||||
static const gchar *ui_info =
|
||||
"<ui>"
|
||||
" <menubar name='MenuBar'>"
|
||||
" <menu action='FileMenu'>"
|
||||
|
|
@ -144,7 +144,7 @@ GtkWidget *
|
|||
do_ui_manager (GtkWidget *do_widget)
|
||||
{
|
||||
static GtkWidget *window = NULL;
|
||||
|
||||
|
||||
if (!window)
|
||||
{
|
||||
GtkWidget *box1;
|
||||
|
|
@ -159,7 +159,7 @@ do_ui_manager (GtkWidget *do_widget)
|
|||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_screen (GTK_WINDOW (window),
|
||||
gtk_widget_get_screen (do_widget));
|
||||
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed), &window);
|
||||
g_signal_connect (window, "delete-event",
|
||||
|
|
@ -167,29 +167,29 @@ do_ui_manager (GtkWidget *do_widget)
|
|||
|
||||
actions = gtk_action_group_new ("Actions");
|
||||
gtk_action_group_add_actions (actions, entries, n_entries, NULL);
|
||||
gtk_action_group_add_toggle_actions (actions,
|
||||
toggle_entries, n_toggle_entries,
|
||||
gtk_action_group_add_toggle_actions (actions,
|
||||
toggle_entries, n_toggle_entries,
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
color_entries, n_color_entries,
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
color_entries, n_color_entries,
|
||||
COLOR_RED,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
shape_entries, n_shape_entries,
|
||||
gtk_action_group_add_radio_actions (actions,
|
||||
shape_entries, n_shape_entries,
|
||||
SHAPE_OVAL,
|
||||
G_CALLBACK (activate_radio_action),
|
||||
G_CALLBACK (activate_radio_action),
|
||||
NULL);
|
||||
|
||||
ui = gtk_ui_manager_new ();
|
||||
gtk_ui_manager_insert_action_group (ui, actions, 0);
|
||||
g_object_unref (actions);
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window),
|
||||
gtk_window_add_accel_group (GTK_WINDOW (window),
|
||||
gtk_ui_manager_get_accel_group (ui));
|
||||
gtk_window_set_title (GTK_WINDOW (window), "UI Manager");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
||||
|
||||
|
||||
|
||||
if (!gtk_ui_manager_add_ui_from_string (ui, ui_info, -1, &error))
|
||||
{
|
||||
g_message ("building menus failed: %s", error->message);
|
||||
|
|
@ -198,7 +198,7 @@ do_ui_manager (GtkWidget *do_widget)
|
|||
|
||||
box1 = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), box1);
|
||||
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (box1),
|
||||
gtk_ui_manager_get_widget (ui, "/MenuBar"),
|
||||
FALSE, FALSE, 0);
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ load_pixbufs (void)
|
|||
/* We pass NULL for the error return location, we don't care
|
||||
* about the error message.
|
||||
*/
|
||||
|
||||
|
||||
background = gdk_pixbuf_new_from_file (BACKGROUND_NAME, NULL);
|
||||
if (!background)
|
||||
return FALSE;
|
||||
|
|
@ -90,7 +90,7 @@ static gint
|
|||
expose_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
cairo_t *cr;
|
||||
|
||||
|
||||
cr = gdk_cairo_create (event->window);
|
||||
gdk_cairo_set_source_pixbuf (cr, frame, 0, 0);
|
||||
gdk_cairo_rectangle (cr, &event->area);
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ destroy_context (gpointer data)
|
|||
LoadContext *lc = data;
|
||||
|
||||
g_free (lc->filename);
|
||||
|
||||
|
||||
if (lc->load_timeout)
|
||||
g_source_remove (lc->load_timeout);
|
||||
|
||||
|
|
@ -55,7 +55,7 @@ destroy_context (gpointer data)
|
|||
gdk_pixbuf_loader_close (lc->pixbuf_loader, NULL);
|
||||
g_object_unref (lc->pixbuf_loader);
|
||||
}
|
||||
|
||||
|
||||
g_free (lc);
|
||||
}
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ get_load_context (GtkWidget *image)
|
|||
{
|
||||
lc = g_new0 (LoadContext, 1);
|
||||
|
||||
g_object_set_data_full (G_OBJECT (image),
|
||||
g_object_set_data_full (G_OBJECT (image),
|
||||
"lc",
|
||||
lc,
|
||||
destroy_context);
|
||||
|
|
@ -87,7 +87,7 @@ progressive_prepared_callback (GdkPixbufLoader* loader,
|
|||
GtkWidget* image;
|
||||
|
||||
image = GTK_WIDGET (data);
|
||||
|
||||
|
||||
pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
|
||||
|
||||
/* Avoid displaying random memory contents, since the pixbuf
|
||||
|
|
@ -108,7 +108,7 @@ progressive_updated_callback (GdkPixbufLoader* loader,
|
|||
gpointer data)
|
||||
{
|
||||
GtkWidget* image;
|
||||
|
||||
|
||||
image = GTK_WIDGET (data);
|
||||
|
||||
/* We know the pixbuf inside the GtkImage has changed, but the image
|
||||
|
|
@ -123,7 +123,7 @@ progressive_updated_callback (GdkPixbufLoader* loader,
|
|||
* is gdk_pixbuf_animation_iter_on_currently_loading_frame(), but
|
||||
* who cares.
|
||||
*/
|
||||
|
||||
|
||||
gtk_widget_queue_draw (image);
|
||||
}
|
||||
|
||||
|
|
@ -132,27 +132,27 @@ progressive_timeout (gpointer data)
|
|||
{
|
||||
GtkWidget *image;
|
||||
LoadContext *lc;
|
||||
|
||||
|
||||
image = GTK_WIDGET (data);
|
||||
lc = get_load_context (image);
|
||||
|
||||
|
||||
/* This shows off fully-paranoid error handling, so looks scary.
|
||||
* You could factor out the error handling code into a nice separate
|
||||
* function to make things nicer.
|
||||
*/
|
||||
|
||||
|
||||
if (lc->image_stream)
|
||||
{
|
||||
size_t bytes_read;
|
||||
guchar buf[256];
|
||||
GError *error = NULL;
|
||||
|
||||
|
||||
bytes_read = fread (buf, 1, 256, lc->image_stream);
|
||||
|
||||
if (ferror (lc->image_stream))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (lc->window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
|
|
@ -167,7 +167,7 @@ progressive_timeout (gpointer data)
|
|||
lc->image_stream = NULL;
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
|
||||
lc->load_timeout = 0;
|
||||
|
||||
return FALSE; /* uninstall the timeout */
|
||||
|
|
@ -178,7 +178,7 @@ progressive_timeout (gpointer data)
|
|||
&error))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (lc->window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
|
|
@ -187,13 +187,13 @@ progressive_timeout (gpointer data)
|
|||
error->message);
|
||||
|
||||
g_error_free (error);
|
||||
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
fclose (lc->image_stream);
|
||||
lc->image_stream = NULL;
|
||||
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
lc->load_timeout = 0;
|
||||
|
|
@ -215,29 +215,29 @@ progressive_timeout (gpointer data)
|
|||
&error))
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (lc->window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
"Failed to load image: %s",
|
||||
error->message);
|
||||
|
||||
|
||||
g_error_free (error);
|
||||
|
||||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
g_object_unref (lc->pixbuf_loader);
|
||||
lc->pixbuf_loader = NULL;
|
||||
|
||||
|
||||
lc->load_timeout = 0;
|
||||
|
||||
|
||||
return FALSE; /* uninstall the timeout */
|
||||
}
|
||||
|
||||
|
||||
g_object_unref (lc->pixbuf_loader);
|
||||
lc->pixbuf_loader = NULL;
|
||||
}
|
||||
|
|
@ -249,7 +249,7 @@ progressive_timeout (gpointer data)
|
|||
if (lc->image_stream == NULL)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
|
||||
|
||||
dialog = gtk_message_dialog_new (GTK_WINDOW (lc->window),
|
||||
GTK_DIALOG_DESTROY_WITH_PARENT,
|
||||
GTK_MESSAGE_ERROR,
|
||||
|
|
@ -260,7 +260,7 @@ progressive_timeout (gpointer data)
|
|||
|
||||
g_signal_connect (dialog, "response",
|
||||
G_CALLBACK (gtk_widget_destroy), NULL);
|
||||
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
lc->load_timeout = 0;
|
||||
|
|
@ -274,9 +274,9 @@ progressive_timeout (gpointer data)
|
|||
g_object_unref (lc->pixbuf_loader);
|
||||
lc->pixbuf_loader = NULL;
|
||||
}
|
||||
|
||||
|
||||
lc->pixbuf_loader = gdk_pixbuf_loader_new ();
|
||||
|
||||
|
||||
g_signal_connect (lc->pixbuf_loader, "area_prepared",
|
||||
G_CALLBACK (progressive_prepared_callback), image);
|
||||
g_signal_connect (lc->pixbuf_loader, "area_updated",
|
||||
|
|
@ -293,7 +293,7 @@ start_progressive_loading (GtkWidget *image)
|
|||
LoadContext *lc;
|
||||
|
||||
lc = get_load_context (image);
|
||||
|
||||
|
||||
/* This is obviously totally contrived (we slow down loading
|
||||
* on purpose to show how incremental loading works).
|
||||
* The real purpose of incremental loading is the case where
|
||||
|
|
@ -317,7 +317,7 @@ do_image (const char *filename)
|
|||
GtkWidget *window;
|
||||
gchar *str, *escaped;
|
||||
LoadContext *lc;
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Image Loading");
|
||||
|
||||
|
|
@ -335,9 +335,9 @@ do_image (const char *filename)
|
|||
str);
|
||||
g_free (escaped);
|
||||
g_free (str);
|
||||
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
/* The alignment keeps the frame from growing when users resize
|
||||
|
|
@ -345,7 +345,7 @@ do_image (const char *filename)
|
|||
*/
|
||||
align = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||
gtk_container_add (GTK_CONTAINER (align), frame);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
|
||||
|
||||
image = gtk_image_new_from_pixbuf (NULL);
|
||||
gtk_container_add (GTK_CONTAINER (frame), image);
|
||||
|
|
@ -354,12 +354,12 @@ do_image (const char *filename)
|
|||
|
||||
lc->window = window;
|
||||
lc->filename = g_strdup (filename);
|
||||
|
||||
|
||||
start_progressive_loading (image);
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
||||
|
||||
g_signal_connect (window, "delete_event",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
||||
|
|
@ -378,7 +378,7 @@ do_nonprogressive (const gchar *filename)
|
|||
GtkWidget *align;
|
||||
GtkWidget *window;
|
||||
gchar *str, *escaped;
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Animation");
|
||||
|
||||
|
|
@ -396,9 +396,9 @@ do_nonprogressive (const gchar *filename)
|
|||
str);
|
||||
g_free (escaped);
|
||||
g_free (str);
|
||||
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
|
||||
/* The alignment keeps the frame from growing when users resize
|
||||
|
|
@ -406,14 +406,14 @@ do_nonprogressive (const gchar *filename)
|
|||
*/
|
||||
align = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||
gtk_container_add (GTK_CONTAINER (align), frame);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
|
||||
|
||||
image = gtk_image_new_from_file (filename);
|
||||
gtk_container_add (GTK_CONTAINER (frame), image);
|
||||
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
||||
|
||||
g_signal_connect (window, "delete_event",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
||||
|
|
@ -425,7 +425,7 @@ main (int argc,
|
|||
char **argv)
|
||||
{
|
||||
gint i;
|
||||
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
i = 1;
|
||||
|
|
@ -433,12 +433,12 @@ main (int argc,
|
|||
{
|
||||
do_image (argv[i]);
|
||||
do_nonprogressive (argv[i]);
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,15 +24,15 @@ gboolean
|
|||
read_line (FILE *stream, GString *str)
|
||||
{
|
||||
int n_read = 0;
|
||||
|
||||
|
||||
flockfile (stream);
|
||||
|
||||
g_string_truncate (str, 0);
|
||||
|
||||
|
||||
while (1)
|
||||
{
|
||||
int c;
|
||||
|
||||
|
||||
c = getc_unlocked (stream);
|
||||
|
||||
if (c == EOF)
|
||||
|
|
@ -46,12 +46,12 @@ read_line (FILE *stream, GString *str)
|
|||
case '\n':
|
||||
{
|
||||
int next_c = getc_unlocked (stream);
|
||||
|
||||
|
||||
if (!(next_c == EOF ||
|
||||
(c == '\r' && next_c == '\n') ||
|
||||
(c == '\n' && next_c == '\r')))
|
||||
ungetc (next_c, stream);
|
||||
|
||||
|
||||
goto done;
|
||||
}
|
||||
default:
|
||||
|
|
@ -80,7 +80,7 @@ load_file (const gchar *filename)
|
|||
|
||||
g_free (current_file);
|
||||
current_file = g_strdup (filename);
|
||||
|
||||
|
||||
gtk_text_buffer_get_bounds (info_buffer, &start, &end);
|
||||
gtk_text_buffer_delete (info_buffer, &start, &end);
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ load_file (const gchar *filename)
|
|||
{
|
||||
gchar *p = buffer->str;
|
||||
gchar *q;
|
||||
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case 0:
|
||||
|
|
@ -124,11 +124,11 @@ load_file (const gchar *filename)
|
|||
gtk_text_buffer_apply_tag_by_name (info_buffer, "title", &start, &end);
|
||||
|
||||
start = end;
|
||||
|
||||
|
||||
state++;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case 1:
|
||||
/* Reading body of info section */
|
||||
while (isspace (*p))
|
||||
|
|
@ -141,14 +141,14 @@ load_file (const gchar *filename)
|
|||
else
|
||||
{
|
||||
int len;
|
||||
|
||||
|
||||
while (*p == '*' || isspace (*p))
|
||||
p++;
|
||||
|
||||
len = strlen (p);
|
||||
while (isspace (*(p + len - 1)))
|
||||
len--;
|
||||
|
||||
|
||||
if (len > 0)
|
||||
{
|
||||
if (in_para)
|
||||
|
|
@ -178,7 +178,7 @@ load_file (const gchar *filename)
|
|||
}
|
||||
else
|
||||
break;
|
||||
|
||||
|
||||
case 3:
|
||||
/* Reading program body */
|
||||
gtk_text_buffer_insert (source_buffer, &start, p, -1);
|
||||
|
|
@ -231,7 +231,7 @@ button_press_event_cb (GtkTreeView *tree_view,
|
|||
g_signal_stop_emission_by_name (tree_view, "button-press-event");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -266,10 +266,10 @@ create_text (GtkTextBuffer **buffer,
|
|||
GTK_POLICY_AUTOMATIC);
|
||||
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_SHADOW_IN);
|
||||
|
||||
|
||||
text_view = gtk_text_view_new ();
|
||||
gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
|
||||
|
||||
|
||||
*buffer = gtk_text_buffer_new (NULL);
|
||||
gtk_text_view_set_buffer (GTK_TEXT_VIEW (text_view), *buffer);
|
||||
gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
|
||||
|
|
@ -281,9 +281,9 @@ create_text (GtkTextBuffer **buffer,
|
|||
gtk_widget_modify_font (text_view, font_desc);
|
||||
pango_font_description_free (font_desc);
|
||||
}
|
||||
|
||||
|
||||
gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), !is_source);
|
||||
|
||||
|
||||
return scrolled_window;
|
||||
}
|
||||
|
||||
|
|
@ -345,7 +345,7 @@ main (int argc, char **argv)
|
|||
GtkTextTag *tag;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
|
@ -382,10 +382,10 @@ main (int argc, char **argv)
|
|||
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
|
||||
|
||||
load_file (testgtk_demos[0].filename);
|
||||
|
||||
|
||||
gtk_main ();
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ int
|
|||
expose_cb (GtkWidget *drawing_area, GdkEventExpose *evt, gpointer data)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
|
||||
pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area), "pixbuf");
|
||||
if (gdk_pixbuf_get_has_alpha (pixbuf))
|
||||
{
|
||||
|
|
@ -32,11 +32,11 @@ expose_cb (GtkWidget *drawing_area, GdkEventExpose *evt, gpointer data)
|
|||
}
|
||||
else
|
||||
{
|
||||
gdk_draw_rgb_image (drawing_area->window,
|
||||
drawing_area->style->black_gc,
|
||||
gdk_draw_rgb_image (drawing_area->window,
|
||||
drawing_area->style->black_gc,
|
||||
evt->area.x, evt->area.y,
|
||||
evt->area.width,
|
||||
evt->area.height,
|
||||
evt->area.height,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
gdk_pixbuf_get_pixels (pixbuf) +
|
||||
(evt->area.y * gdk_pixbuf_get_rowstride (pixbuf)) +
|
||||
|
|
@ -50,9 +50,9 @@ int
|
|||
configure_cb (GtkWidget *drawing_area, GdkEventConfigure *evt, gpointer data)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
|
||||
pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area), "pixbuf");
|
||||
|
||||
|
||||
g_print ("X:%d Y:%d\n", evt->width, evt->height);
|
||||
if (evt->width != gdk_pixbuf_get_width (pixbuf) || evt->height != gdk_pixbuf_get_height (pixbuf))
|
||||
{
|
||||
|
|
@ -73,16 +73,16 @@ extern void pixbuf_init (void);
|
|||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
{
|
||||
GdkWindow *root;
|
||||
GtkWidget *window;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *drawing_area;
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
pixbuf_init ();
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
gtk_init (&argc, &argv);
|
||||
gdk_rgb_set_verbose (TRUE);
|
||||
|
||||
gtk_widget_set_default_colormap (gdk_rgb_get_colormap ());
|
||||
|
|
@ -90,16 +90,16 @@ main (int argc, char **argv)
|
|||
root = gdk_get_default_root_window ();
|
||||
pixbuf = gdk_pixbuf_get_from_drawable (NULL, root, NULL,
|
||||
0, 0, 0, 0, 150, 160);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (window, "delete_event",
|
||||
G_CALLBACK (close_app), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (close_app), NULL);
|
||||
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
drawing_area = gtk_drawing_area_new ();
|
||||
gtk_widget_set_size_request (GTK_WIDGET (drawing_area),
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
|
|
@ -111,7 +111,7 @@ main (int argc, char **argv)
|
|||
G_CALLBACK (configure_cb), NULL);
|
||||
g_object_set_data (G_OBJECT (drawing_area), "pixbuf", pixbuf);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
|
||||
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
gtk_main ();
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ keypress_check (GtkWidget *widget, GdkEventKey *evt, gpointer data)
|
|||
if (pixbuf == NULL) {
|
||||
fprintf (stderr, "PIXBUF NULL\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
loader = gdk_pixbuf_loader_new ();
|
||||
if (!gdk_pixbuf_save_to_callback (pixbuf, save_to_loader, loader, "jpeg",
|
||||
|
|
@ -160,7 +160,7 @@ keypress_check (GtkWidget *widget, GdkEventKey *evt, gpointer data)
|
|||
if (pixbuf == NULL) {
|
||||
fprintf (stderr, "PIXBUF NULL\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!gdk_pixbuf_save (pixbuf, "foo.jpg", "jpeg",
|
||||
&err,
|
||||
|
|
@ -217,7 +217,7 @@ keypress_check (GtkWidget *widget, GdkEventKey *evt, gpointer data)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!gdk_pixbuf_save (pixbuf, "foo.png", "png",
|
||||
if (!gdk_pixbuf_save (pixbuf, "foo.png", "png",
|
||||
&err,
|
||||
"tEXt::Software", "testpixbuf-save",
|
||||
NULL)) {
|
||||
|
|
@ -270,7 +270,7 @@ keypress_check (GtkWidget *widget, GdkEventKey *evt, gpointer data)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!gdk_pixbuf_save (pixbuf, "foo.ico", "ico",
|
||||
if (!gdk_pixbuf_save (pixbuf, "foo.ico", "ico",
|
||||
&err,
|
||||
NULL)) {
|
||||
fprintf (stderr, "%s", err->message);
|
||||
|
|
@ -312,7 +312,7 @@ expose_cb (GtkWidget *drawing_area, GdkEventExpose *evt, gpointer data)
|
|||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
cairo_t *cr;
|
||||
|
||||
|
||||
pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area),
|
||||
"pixbuf");
|
||||
|
||||
|
|
@ -330,10 +330,10 @@ static int
|
|||
configure_cb (GtkWidget *drawing_area, GdkEventConfigure *evt, gpointer data)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area),
|
||||
|
||||
pixbuf = (GdkPixbuf *) g_object_get_data (G_OBJECT (drawing_area),
|
||||
"pixbuf");
|
||||
|
||||
|
||||
g_print ("X:%d Y:%d\n", evt->width, evt->height);
|
||||
if (evt->width != gdk_pixbuf_get_width (pixbuf) || evt->height != gdk_pixbuf_get_height (pixbuf)) {
|
||||
GdkWindow *root;
|
||||
|
|
@ -351,28 +351,28 @@ configure_cb (GtkWidget *drawing_area, GdkEventConfigure *evt, gpointer data)
|
|||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
{
|
||||
GdkWindow *root;
|
||||
GtkWidget *window;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *drawing_area;
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
root = gdk_get_default_root_window ();
|
||||
pixbuf = gdk_pixbuf_get_from_drawable (NULL, root, NULL,
|
||||
0, 0, 0, 0, 150, 160);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (window, "delete_event",
|
||||
G_CALLBACK (close_app), NULL);
|
||||
g_signal_connect (window, "destroy",
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (close_app), NULL);
|
||||
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
drawing_area = gtk_drawing_area_new ();
|
||||
gtk_widget_set_size_request (GTK_WIDGET (drawing_area),
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
|
|
@ -382,12 +382,12 @@ main (int argc, char **argv)
|
|||
|
||||
g_signal_connect (drawing_area, "configure_event",
|
||||
G_CALLBACK (configure_cb), NULL);
|
||||
g_signal_connect (window, "key_press_event",
|
||||
G_CALLBACK (keypress_check), drawing_area);
|
||||
g_signal_connect (window, "key_press_event",
|
||||
G_CALLBACK (keypress_check), drawing_area);
|
||||
g_object_set_data_full (G_OBJECT (drawing_area), "pixbuf", pixbuf,
|
||||
(GDestroyNotify) g_object_unref);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), drawing_area, TRUE, TRUE, 0);
|
||||
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
gtk_main ();
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ GdkInterpType interp_type = GDK_INTERP_BILINEAR;
|
|||
int overall_alpha = 255;
|
||||
GdkPixbuf *pixbuf;
|
||||
GtkWidget *darea;
|
||||
|
||||
|
||||
void
|
||||
set_interp_type (GtkWidget *widget, gpointer data)
|
||||
{
|
||||
|
|
@ -38,7 +38,7 @@ expose_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
|||
cairo_t *cr;
|
||||
|
||||
gdk_window_set_back_pixmap (widget->window, NULL, FALSE);
|
||||
|
||||
|
||||
dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, event->area.width, event->area.height);
|
||||
|
||||
gdk_pixbuf_composite_color (pixbuf, dest,
|
||||
|
|
@ -57,7 +57,7 @@ expose_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
|||
|
||||
cairo_destroy (cr);
|
||||
g_object_unref (dest);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -74,7 +74,7 @@ main(int argc, char **argv)
|
|||
GtkRequisition scratch_requisition;
|
||||
const gchar *creator;
|
||||
GError *error;
|
||||
|
||||
|
||||
pixbuf_init ();
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
|
@ -100,7 +100,7 @@ main(int argc, char **argv)
|
|||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (window, "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
|
||||
|
|
@ -116,7 +116,7 @@ main(int argc, char **argv)
|
|||
g_signal_connect (combo_box, "changed",
|
||||
G_CALLBACK (set_interp_type),
|
||||
NULL);
|
||||
|
||||
|
||||
alignment = gtk_alignment_new (0.0, 0.0, 0.0, 0.5);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), alignment, FALSE, FALSE, 0);
|
||||
|
||||
|
|
@ -129,7 +129,7 @@ main(int argc, char **argv)
|
|||
adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (overall_alpha, 0, 255, 1, 10, 0));
|
||||
g_signal_connect (adjustment, "value_changed",
|
||||
G_CALLBACK (overall_changed_cb), NULL);
|
||||
|
||||
|
||||
hscale = gtk_hscale_new (adjustment);
|
||||
gtk_scale_set_digits (GTK_SCALE (hscale), 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), hscale, TRUE, TRUE, 0);
|
||||
|
|
@ -149,7 +149,7 @@ main(int argc, char **argv)
|
|||
gtk_window_set_default_size (GTK_WINDOW (window),
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
scratch_requisition.height + gdk_pixbuf_get_height (pixbuf));
|
||||
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
gtk_main ();
|
||||
|
|
|
|||
|
|
@ -302,7 +302,7 @@ static const char * gtk_mini_xpm[] = {
|
|||
" >%$$ ",
|
||||
" >= "};
|
||||
|
||||
const gchar ** xpms[] = {
|
||||
const gchar ** xpms[] = {
|
||||
book_open_xpm,
|
||||
book_closed_xpm,
|
||||
mini_page_xpm,
|
||||
|
|
@ -326,11 +326,11 @@ expose_func (GtkWidget *drawing_area, GdkEventExpose *event, gpointer data)
|
|||
if (gdk_pixbuf_get_has_alpha (pixbuf)) {
|
||||
GdkPixbuf *dest;
|
||||
cairo_t *cr;
|
||||
|
||||
|
||||
gdk_window_set_back_pixmap (drawing_area->window, NULL, FALSE);
|
||||
|
||||
|
||||
dest = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, event->area.width, event->area.height);
|
||||
|
||||
|
||||
gdk_pixbuf_composite_color (pixbuf, dest,
|
||||
0, 0, event->area.width, event->area.height,
|
||||
-event->area.x, -event->area.y,
|
||||
|
|
@ -338,7 +338,7 @@ expose_func (GtkWidget *drawing_area, GdkEventExpose *event, gpointer data)
|
|||
(double) drawing_area->allocation.height / gdk_pixbuf_get_height (pixbuf),
|
||||
GDK_INTERP_BILINEAR, 255,
|
||||
event->area.x, event->area.y, 16, 0xaaaaaa, 0x555555);
|
||||
|
||||
|
||||
cr = gdk_cairo_create (drawing_area->window);
|
||||
|
||||
gdk_cairo_set_source_pixbuf (cr, dest, 0, 0);
|
||||
|
|
@ -350,8 +350,8 @@ expose_func (GtkWidget *drawing_area, GdkEventExpose *event, gpointer data)
|
|||
} else {
|
||||
gdk_draw_rgb_image (drawing_area->window,
|
||||
drawing_area->style->white_gc,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width,
|
||||
event->area.height,
|
||||
GDK_RGB_DITHER_NORMAL,
|
||||
gdk_pixbuf_get_pixels (pixbuf)
|
||||
|
|
@ -366,7 +366,7 @@ config_func (GtkWidget *drawing_area, GdkEventConfigure *event, gpointer data)
|
|||
{
|
||||
#if 0
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
|
||||
pixbuf = (GdkPixbuf *)g_object_get_data (G_OBJECT (drawing_area), "pixbuf");
|
||||
|
||||
if (((event->width) != gdk_pixbuf_get_width (pixbuf)) ||
|
||||
|
|
@ -410,7 +410,7 @@ new_testrgb_window (GdkPixbuf *pixbuf, gchar *title)
|
|||
gtk_widget_set_size_request (GTK_WIDGET (drawing_area), w, h);
|
||||
gtk_box_pack_start (GTK_BOX (temp_box), drawing_area, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), temp_box, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
|
||||
g_signal_connect (drawing_area, "expose_event",
|
||||
G_CALLBACK (expose_func), NULL);
|
||||
|
|
@ -443,14 +443,14 @@ update_timeout (gpointer data)
|
|||
ProgressFileStatus *status = data;
|
||||
gboolean done;
|
||||
GError *error;
|
||||
|
||||
|
||||
done = FALSE;
|
||||
error = NULL;
|
||||
|
||||
if (!feof (status->imagefile)) {
|
||||
gint nbytes;
|
||||
|
||||
nbytes = fread (status->buf, 1, status->readlen,
|
||||
|
||||
nbytes = fread (status->buf, 1, status->readlen,
|
||||
status->imagefile);
|
||||
|
||||
|
||||
|
|
@ -460,12 +460,12 @@ update_timeout (gpointer data)
|
|||
g_error_free (error);
|
||||
done = TRUE;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
done = TRUE;
|
||||
|
||||
|
||||
if (done) {
|
||||
/* ignoring errors, we should not do that. */
|
||||
gdk_pixbuf_loader_close (GDK_PIXBUF_LOADER (status->loader), NULL);
|
||||
|
|
@ -555,7 +555,7 @@ main (int argc, char **argv)
|
|||
if (argc == 1) {
|
||||
const gchar*** xpmp;
|
||||
GError *error = NULL;
|
||||
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_data (default_image, GDK_COLORSPACE_RGB, FALSE, 8,
|
||||
DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_WIDTH * 3,
|
||||
NULL, NULL);
|
||||
|
|
@ -581,7 +581,7 @@ main (int argc, char **argv)
|
|||
|
||||
pixbuf = gdk_pixbuf_new_from_inline (sizeof (gnome_foot), gnome_foot, TRUE, NULL);
|
||||
new_testrgb_window (pixbuf, "GNOME Foot from inlined RLE data");
|
||||
|
||||
|
||||
found_valid = TRUE;
|
||||
} else {
|
||||
for (i = 1; i < argc; i++) {
|
||||
|
|
@ -595,7 +595,7 @@ main (int argc, char **argv)
|
|||
error->message);
|
||||
g_error_free (error);
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
pixbuf = gdk_pixbuf_rotate (pixbuf, 10.0);
|
||||
#endif
|
||||
|
|
@ -605,7 +605,7 @@ main (int argc, char **argv)
|
|||
found_valid = TRUE;
|
||||
}
|
||||
}
|
||||
#if 1
|
||||
#if 1
|
||||
{
|
||||
GtkWidget* rgb_window = NULL;
|
||||
ProgressFileStatus status;
|
||||
|
|
@ -618,7 +618,7 @@ main (int argc, char **argv)
|
|||
status.buf = g_malloc (readlen);
|
||||
|
||||
#if 0
|
||||
g_signal_connect (pixbuf_loader, "size_prepared",
|
||||
g_signal_connect (pixbuf_loader, "size_prepared",
|
||||
G_CALLBACK (size_func), NULL);
|
||||
#endif
|
||||
|
||||
|
|
@ -628,7 +628,7 @@ main (int argc, char **argv)
|
|||
g_signal_connect (pixbuf_loader, "area_updated",
|
||||
G_CALLBACK (progressive_updated_callback),
|
||||
&rgb_window);
|
||||
|
||||
|
||||
status.imagefile = fopen (argv[1], "r");
|
||||
g_assert (status.imagefile != NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ Ex: (module Gtk)
|
|||
Ex: (module Rgb
|
||||
(submodule-of Gdk))
|
||||
|
||||
modules are later referred to with a list of module names, like
|
||||
modules are later referred to with a list of module names, like
|
||||
(Gdk Rgb) or (Gtk)
|
||||
|
||||
Object and boxed type definitions automatically create a submodule.
|
||||
|
|
@ -58,7 +58,7 @@ Ex: (type
|
|||
;; This one would be implied by the (object) def for GtkWidget I
|
||||
;; think - (type) is only required for types that are not implied
|
||||
;; by other definitions, such as int/boolean/etc.
|
||||
|
||||
|
||||
(type
|
||||
(alias GtkWidget)
|
||||
(in-module (Gtk))
|
||||
|
|
@ -94,7 +94,7 @@ stuff.
|
|||
(c-name name-of-the-object-in-C)
|
||||
(field (type-and-name type-alias-of-struct-field name-of-struct-field)
|
||||
(access read-or-write-or-readwrite)))
|
||||
|
||||
|
||||
|
||||
Ex: (object Widget
|
||||
(in-module (Gtk))
|
||||
|
|
@ -111,10 +111,10 @@ An "object" declaration automatically implies the type definition:
|
|||
(out-c-name pointer-to-pointer-to-c-name)
|
||||
(inout-c-name pointer-to-c-name))
|
||||
|
||||
Ex:
|
||||
(type (alias GtkWidget)
|
||||
(in-c-name GtkWidget*)
|
||||
(out-c-name GtkWidget**)
|
||||
Ex:
|
||||
(type (alias GtkWidget)
|
||||
(in-c-name GtkWidget*)
|
||||
(out-c-name GtkWidget**)
|
||||
(inout-c-name GtkWidget*))
|
||||
|
||||
It also implies a module that is the name broken into parts:
|
||||
|
|
@ -131,7 +131,7 @@ It also implies a module that is the name broken into parts:
|
|||
(return-type return-value-type) ;; defaults to void
|
||||
(caller-owns-return boolean-value) ;; defaults to #f
|
||||
(can-return-null boolean-value) ;; defaults to #t
|
||||
(parameter in-or-out-or-inout
|
||||
(parameter in-or-out-or-inout
|
||||
(type-and-name parameter-type-alias parameter-name)
|
||||
(type-parameter name-of-contained-type) ;; optional, requires parametric type
|
||||
(c-declaration "c-type-and-name")) ;; c-declaration only required
|
||||
|
|
@ -144,7 +144,7 @@ Ex:
|
|||
(in-module (Gdk Rgb)
|
||||
(c-name gdk_rgb_init)))
|
||||
|
||||
Ex:
|
||||
Ex:
|
||||
(function new
|
||||
(in-module (Gdk Rgb Cmap))
|
||||
(is-constructor-of GdkRgbCmap)
|
||||
|
|
@ -160,7 +160,7 @@ Ex:
|
|||
(c-name gnome_config_set_set_handler)
|
||||
(parameter in (type-and-name native func)
|
||||
(c-declaration "void (*func)(void*)"))
|
||||
(parameter in (type-and-name gpointer data)))
|
||||
(parameter in (type-and-name gpointer data)))
|
||||
|
||||
===
|
||||
(method method-name
|
||||
|
|
@ -168,7 +168,7 @@ Ex:
|
|||
;; retval/arg attributes as for (function), but with first parameter
|
||||
;; omitted for non-constructors
|
||||
)
|
||||
|
||||
|
||||
Ex:
|
||||
(method set_text
|
||||
(of-object Label (Gtk))
|
||||
|
|
@ -190,7 +190,7 @@ Ex:
|
|||
(readable #t)
|
||||
(writeable #t))
|
||||
|
||||
===
|
||||
===
|
||||
(signal signal-name
|
||||
(run-action bool-value)
|
||||
(run-first bool-value)
|
||||
|
|
@ -211,7 +211,7 @@ Ex:
|
|||
(parameter in (type-and-name gint column))
|
||||
(parameter in (type-and-name GdkEvent* event)))
|
||||
|
||||
===
|
||||
===
|
||||
(enum enum-name
|
||||
(in-module modname)
|
||||
(c-name name-in-c)
|
||||
|
|
@ -238,7 +238,7 @@ Ex:
|
|||
|
||||
===
|
||||
(flags) is just like enum, but some bindings may wrap enums and flags differently.
|
||||
|
||||
|
||||
===
|
||||
|
||||
(boxed boxed-name
|
||||
|
|
@ -268,10 +268,10 @@ An "object" declaration automatically implies the type definition:
|
|||
(out-c-name pointer-to-pointer-to-c-name)
|
||||
(inout-c-name pointer-to-c-name))
|
||||
|
||||
Ex:
|
||||
(type (alias GdkPixmap)
|
||||
(in-c-name GdkPixmap*)
|
||||
(out-c-name GdkPixmap**)
|
||||
Ex:
|
||||
(type (alias GdkPixmap)
|
||||
(in-c-name GdkPixmap*)
|
||||
(out-c-name GdkPixmap**)
|
||||
(inout-c-name GdkPixmap*))
|
||||
|
||||
|
||||
|
|
@ -296,9 +296,9 @@ Ex:
|
|||
|
||||
Implies GdkRectangle type alias:
|
||||
|
||||
(type (alias GdkRectangle)
|
||||
(in-c-name GdkRectangle*)
|
||||
(out-c-name GdkRectangle*) ;; note - not the same as boxed types
|
||||
(type (alias GdkRectangle)
|
||||
(in-c-name GdkRectangle*)
|
||||
(out-c-name GdkRectangle*) ;; note - not the same as boxed types
|
||||
(inout-c-name GdkRectangle*))
|
||||
|
||||
===
|
||||
|
|
@ -333,6 +333,6 @@ Ex:
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ gdkdnd.c divides into 4 pieces:
|
|||
3) Xdnd specific code
|
||||
4) The public interfaces
|
||||
|
||||
The code in gtkdnd.c roughly consists of three parts
|
||||
|
||||
The code in gtkdnd.c roughly consists of three parts
|
||||
|
||||
1) General utility functions
|
||||
2) Destination side code
|
||||
3) Source side code.
|
||||
|
|
@ -43,7 +43,7 @@ in the structures GtkSourceInfo and GtkDestInfo.
|
|||
|
||||
The GtkSourceInfo structure is created when the drag
|
||||
begins, and persists until the drag either completes
|
||||
or times out. A pointer to it is stored in
|
||||
or times out. A pointer to it is stored in
|
||||
dataset-data for the GdkDragContext, however there
|
||||
is no ownership. If the SourceInfo is destroyed
|
||||
before the context, the field is simply cleared.
|
||||
|
|
@ -95,7 +95,7 @@ void gdk_drag_find_window (GdkDragContext *context,
|
|||
gboolean gdk_drag_motion (GdkDragContext *context,
|
||||
GdkWindow *dest_window,
|
||||
GdkDragProtocol protocol,
|
||||
gint x_root,
|
||||
gint x_root,
|
||||
gint y_root,
|
||||
GdkDragAction action,
|
||||
guint32 time);
|
||||
|
|
@ -129,7 +129,7 @@ SubstructureNotifyMask on the root window, so that
|
|||
it can update this list.
|
||||
|
||||
It probably would be easier to just reread the entire
|
||||
list when one of these events occurs, instead of
|
||||
list when one of these events occurs, instead of
|
||||
incrementally updating, but updating the list in
|
||||
sync was sort of fun code, so I did it that way ;-)
|
||||
|
||||
|
|
@ -144,7 +144,7 @@ the button press, which might actually be before
|
|||
the XQueryPointer for the previous MotionNotify
|
||||
event is done.)
|
||||
|
||||
Probably better is doing MotionNotify compression
|
||||
Probably better is doing MotionNotify compression
|
||||
and discarding MotionNotify events when there
|
||||
are more on the queue before the next ButtonPress/Release.
|
||||
|
||||
|
|
@ -174,7 +174,7 @@ Because the abstraction of the drag protocol is at the GDK
|
|||
level, a proxy drag from Motif to Xdnd or vice versa happens
|
||||
pretty much automatically during the drag, though the
|
||||
drop can get complicated. For Xdnd <-> Motif,
|
||||
Motif <-> Xdnd, or Motif <-> Motif drags, it is necessary to
|
||||
Motif <-> Xdnd, or Motif <-> Motif drags, it is necessary to
|
||||
for the Proxy to retrieve the data and pass it on to
|
||||
the true destination, since either the selection names
|
||||
differ or (Motif<->Motif), the proxy needs to know
|
||||
|
|
@ -191,7 +191,7 @@ The spec is at:
|
|||
|
||||
Motif:
|
||||
|
||||
The Motif DND protocol is best described in the
|
||||
The Motif DND protocol is best described in the
|
||||
Hungry Programmers _Inside Lesstif_ book, available
|
||||
from:
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ has_pointer_focus(W) into four cases:
|
|||
T1: [(F==W || F==Descendant) => F==Ancestor]; has_pointer(W)
|
||||
|
||||
T2: [(F==W || F==Descendant) => F==PointerRoot]; has_pointer(W)
|
||||
|
||||
|
||||
T3: [(F==None || F==Other) => (F==PointerRoot || F==Ancestor)];
|
||||
has_pointer(W)
|
||||
|
||||
|
|
@ -65,11 +65,11 @@ T1:, we get a FocusOut with a mode of Ancestor or Virtual
|
|||
We need to separately track has_pointer(W) to distinguish
|
||||
this from the case where we get these events and !has_pointer(W)
|
||||
|
||||
T2, T3: together these are exactly the cases where we get
|
||||
T2, T3: together these are exactly the cases where we get
|
||||
FocusIn/NotifyPointer.
|
||||
|
||||
For T4, we get an EnterNotify with the focus flag set. An
|
||||
EnterNotify with a focus flag set will also be sent if
|
||||
EnterNotify with a focus flag set will also be sent if
|
||||
F==W, so we have to to explicitly test for that case
|
||||
using has_focus_window(W)
|
||||
|
||||
|
|
@ -80,7 +80,7 @@ are exactly the opposite
|
|||
F1: [(F==W || F==Descendant) <= F==Ancestor]; has_pointer(W)
|
||||
|
||||
F2: [(F==W || F==Descendant) <= F==PointerRoot]; has_pointer(W)
|
||||
|
||||
|
||||
F3: [(F==None || F==Other) <= (F==PointerRoot || F==Ancestor)];
|
||||
has_pointer(W)
|
||||
|
||||
|
|
@ -92,11 +92,11 @@ F1: we get a FocusIn with a mode of Ancestor or Virtual
|
|||
We need to separately track has_pointer(W) to distinguish
|
||||
this from the case we get these events and !has_pointer(W)
|
||||
|
||||
F2, F3: together these are exactly the cases where we get
|
||||
F2, F3: together these are exactly the cases where we get
|
||||
FocusOut/NotifyPointer.
|
||||
|
||||
F4: we get an LeaveNotify with the focus flag set. An
|
||||
LeaveNotify with a focus flag set will also be sent if
|
||||
LeaveNotify with a focus flag set will also be sent if
|
||||
F==W, so we have to to explicitly test for that case
|
||||
using has_focus_window(W).
|
||||
|
||||
|
|
@ -104,16 +104,16 @@ F4: we get an LeaveNotify with the focus flag set. An
|
|||
Modifications for keyboard grabs
|
||||
================================
|
||||
|
||||
The above algorithm ignores keyboard grabs, which also
|
||||
The above algorithm ignores keyboard grabs, which also
|
||||
generate focus events, and needs to be modified somewhat
|
||||
to take keyboard grabs into effect. The basic idea
|
||||
to take keyboard grabs into effect. The basic idea
|
||||
is that for has_pointer_focus(W)/has_window_focus(W) we track
|
||||
them ignoring grabs and ungrabs, and then supplement
|
||||
that with another predicate has_focus(W) which pays
|
||||
attention to grabs and ungrabs.
|
||||
|
||||
Modification 1:
|
||||
|
||||
|
||||
When tracking has_pointer_focus(W), ignore all Focus
|
||||
events with a mode of NotifyGrab or NotifyUngrab.
|
||||
|
||||
|
|
@ -129,20 +129,20 @@ Modification 1:
|
|||
F=Ancestor, G=None => F=Ancestor, G=Ancestor
|
||||
|
||||
We stop getting events, but receive no notification.
|
||||
|
||||
|
||||
The case of no window manager and keyboard grabs is pretty
|
||||
rare in any case.
|
||||
|
||||
Modification 2:
|
||||
|
||||
|
||||
When tracking has_focus_window(W), ignore all Focus
|
||||
events with a mode of NotifyGrab or NotifyUngrab.
|
||||
|
||||
Modification 3: instead of calculating focus as
|
||||
|
||||
Modification 3: instead of calculating focus as
|
||||
|
||||
has_focus_window(W) || has_pointer_focus(W)
|
||||
|
||||
Calculate it as
|
||||
Calculate it as
|
||||
|
||||
has_focus(W) || has_pointer_focus(W)
|
||||
|
||||
|
|
@ -150,12 +150,12 @@ Modification 3: instead of calculating focus as
|
|||
|
||||
has_focus(W): F==W || F==Descendant || G=W
|
||||
|
||||
Tracking has_focus(W) is done by
|
||||
Tracking has_focus(W) is done by
|
||||
|
||||
FocusIn: detail != NotifyInferior, mode != NotifyWhileGrabbed:
|
||||
FocusIn: detail != NotifyInferior, mode != NotifyWhileGrabbed:
|
||||
set has_focus
|
||||
FocusOut: detail != NotifyInferior, mode != NotifyWhileGrabbed:
|
||||
FocusOut: detail != NotifyInferior, mode != NotifyWhileGrabbed:
|
||||
clear has_focus
|
||||
|
||||
We still need to track has_focus_window(W) for the T4/F4
|
||||
We still need to track has_focus_window(W) for the T4/F4
|
||||
transitions.
|
||||
|
|
|
|||
|
|
@ -8,16 +8,16 @@ The following files in the gdk/ subdirectory
|
|||
are autogenerated:
|
||||
|
||||
gdkkeysyms.h
|
||||
gdkcursors.h
|
||||
gdkcursors.h
|
||||
|
||||
The following files in the gtk/ subdirectory
|
||||
The following files in the gtk/ subdirectory
|
||||
are autogenerated:
|
||||
|
||||
gtk.defs
|
||||
Description of GTK+ types (and some functions) in a lisp-style
|
||||
format.
|
||||
gtktypebuiltins.h
|
||||
Header file including declarations for internal types
|
||||
Header file including declarations for internal types
|
||||
gtktypebuiltins_vars.c
|
||||
Variables for type values for internal types.
|
||||
gtktypebuiltins_ids.c
|
||||
|
|
@ -55,7 +55,7 @@ The type definitions are generated from several sources:
|
|||
GTK+ header files
|
||||
GDK header files
|
||||
|
||||
The makeenums.pl script does a heuristic parse of
|
||||
The makeenums.pl script does a heuristic parse of
|
||||
the header files and extracts all enumerations declarations.
|
||||
It also recognizes a number of pseudo-comments in the
|
||||
header files:
|
||||
|
|
@ -65,7 +65,7 @@ Two of these apply to individual enumeration values:
|
|||
/*< skip >*/
|
||||
|
||||
This enumeration value should be skipped.
|
||||
|
||||
|
||||
/*< nick=NICK >*/
|
||||
|
||||
The nickname for this value should NICK instead of the
|
||||
|
|
@ -80,7 +80,7 @@ Two of these apply to individual enumeration values:
|
|||
"app" and "widget" that would normally be used.
|
||||
|
||||
The other two apply to entire enumeration declarations.
|
||||
|
||||
|
||||
/*< prefix=PREFIX >*/
|
||||
|
||||
Specifies the prefix to be removed from the enumeration
|
||||
|
|
@ -94,20 +94,20 @@ The other two apply to entire enumeration declarations.
|
|||
|
||||
typedef enum /*< flags >*/
|
||||
{
|
||||
GDK_IM_PREEDIT_AREA = 0x0001,
|
||||
GDK_IM_PREEDIT_CALLBACKS = 0x0002,
|
||||
GDK_IM_PREEDIT_AREA = 0x0001,
|
||||
GDK_IM_PREEDIT_CALLBACKS = 0x0002,
|
||||
[ ... ]
|
||||
} GdkIMStyle;
|
||||
|
||||
makeenums.pl can be run into two modes:
|
||||
|
||||
1) Generate the gtktypebuiltins_eval.c file (this
|
||||
contains arrays holding the mapping of
|
||||
contains arrays holding the mapping of
|
||||
string <=> enumeration value)
|
||||
|
||||
2) Generate the enumeration portion of gtk.defs.
|
||||
|
||||
The enumeration portion is added to the boxed type
|
||||
The enumeration portion is added to the boxed type
|
||||
declarations in gtk-boxed.defs to create gtk.defs.
|
||||
|
||||
The makeetypes.awk program takes the gtk.defs file, and
|
||||
|
|
@ -130,7 +130,7 @@ by genmarshal.pl.
|
|||
The format of this file is a list of lines:
|
||||
|
||||
<retval-type>:<arg1-type>,<arg2-type>,<arg3-type>
|
||||
|
||||
|
||||
e.g.:
|
||||
|
||||
BOOL:POINTER,STRING,STRING,POINTER
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ gtk-config takes the following flags:
|
|||
|
||||
--libs
|
||||
Prints out the linker flags necessary to link a program against GTK
|
||||
|
||||
|
||||
--prefix[=PREFIX]
|
||||
If PREFIX is specified, overrides the configured value of $prefix.
|
||||
(And of exec-prefix, unless --exec-prefix is also specified)
|
||||
|
|
@ -35,7 +35,7 @@ gtk-config takes the following flags:
|
|||
--exec-prefix[=PREFIX]
|
||||
If PREFIX is specified, overrides the configured value of $exec_prefix.
|
||||
Otherwise, prints out the configured value of $exec_prefix
|
||||
|
||||
|
||||
You may also add to the command line a list of additional
|
||||
libraries that gtk-config should supply the CFLAGS and LIBS
|
||||
for. The only currently supported library is 'gthread'.
|
||||
|
|
@ -108,17 +108,17 @@ Notes:
|
|||
|
||||
* The directory where the GTK libraries are installed needs
|
||||
to be found by your system's dynamic linker.
|
||||
|
||||
|
||||
This is generally done by
|
||||
|
||||
editing /etc/ld.so.conf and running ldconfig
|
||||
|
||||
Or by:
|
||||
|
||||
setting the environment variable LD_LIBRARY_PATH,
|
||||
|
||||
or, as a last resort,
|
||||
|
||||
setting the environment variable LD_LIBRARY_PATH,
|
||||
|
||||
or, as a last resort,
|
||||
|
||||
Giving a -R or -rpath flag (depending on your linker) when
|
||||
running configure, for instance:
|
||||
|
||||
|
|
@ -135,9 +135,9 @@ Notes:
|
|||
Advanced note:
|
||||
|
||||
* configure flags
|
||||
|
||||
|
||||
--with-gtk-prefix=PREFIX
|
||||
--with-gtk-exec-prefix=PREFIX
|
||||
--with-gtk-exec-prefix=PREFIX
|
||||
|
||||
are provided to override the prefix and exec-prefix that were stored
|
||||
in the gtk-config shell script by GTK's configure. You are generally
|
||||
|
|
@ -178,7 +178,7 @@ is the AM_PATH_GTK() macro.
|
|||
|
||||
That command does the following:
|
||||
|
||||
If a GTK version greater than 0.99.5 is found, adds $GTK_LIBS to
|
||||
If a GTK version greater than 0.99.5 is found, adds $GTK_LIBS to
|
||||
$LIBS and $GTK_CFLAGS to $CFLAGS. Otherwise, dies with the error
|
||||
message "Cannot find GTK: Is gtk-config in path?"
|
||||
|
||||
|
|
@ -202,7 +202,7 @@ adding the lines:
|
|||
to the Makefile.am.
|
||||
|
||||
To try this example out, create a new directory, add the two
|
||||
files above two it, and copy the testinput.c file from
|
||||
files above two it, and copy the testinput.c file from
|
||||
the gtk/ subdirectory to the new directory. Edit the line:
|
||||
|
||||
#include "gtk.h"
|
||||
|
|
@ -217,7 +217,7 @@ Now execute the following commands:
|
|||
automake --add-missing
|
||||
aclocal
|
||||
autoconf
|
||||
|
||||
|
||||
You now have a package that can be built in the normal fashion
|
||||
|
||||
./configure
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
Information about the icon theme cache format used by GTK+
|
||||
for more information, see the mailing list threads at
|
||||
for more information, see the mailing list threads at
|
||||
|
||||
http://mail.gnome.org/archives/gtk-devel-list/2004-April/msg00065.html
|
||||
http://lists.freedesktop.org/archives/xdg/2004-October/005140.html
|
||||
|
|
@ -10,13 +10,13 @@ information, to reduce the amount of stating and disk seeking at
|
|||
application startup, and to reduce the memory overhead if each app
|
||||
allocates all the icon theme data separately.
|
||||
|
||||
The proposal is to keep the information about the icons in the
|
||||
directory tree below each icon theme directory in an mmap()able
|
||||
cache file (There is basically one cache file per index.theme file).
|
||||
The proposal is to keep the information about the icons in the
|
||||
directory tree below each icon theme directory in an mmap()able
|
||||
cache file (There is basically one cache file per index.theme file).
|
||||
|
||||
The cache doesn't try to hold all information from the index.theme files
|
||||
that you would need to do lookups; it turns out that with the icon theme
|
||||
specification, this isn't even sensible - you can install a
|
||||
specification, this isn't even sensible - you can install a
|
||||
|
||||
$HOME/.local/share/icons/Bluecurve/index.theme
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ is caching of the actual image data; the file format is has an
|
|||
IMAGE_DATA_OFFSET member to allow adding that compatibly. An
|
||||
implementation of the caching scheme for GTK+ can be found at [2]. The
|
||||
cache generator which is included in the patch depends only on glib, and
|
||||
it may be a good idea to move it to freedesktop.org as well.
|
||||
it may be a good idea to move it to freedesktop.org as well.
|
||||
|
||||
|
||||
Regards, Matthias Clasen
|
||||
|
|
@ -41,32 +41,32 @@ Regards, Matthias Clasen
|
|||
The cache file format:
|
||||
|
||||
Header:
|
||||
2 CARD16 MAJOR_VERSION 1
|
||||
2 CARD16 MINOR_VERSION 0
|
||||
4 CARD32 HASH_OFFSET
|
||||
2 CARD16 MAJOR_VERSION 1
|
||||
2 CARD16 MINOR_VERSION 0
|
||||
4 CARD32 HASH_OFFSET
|
||||
4 CARD32 DIRECTORY_LIST_OFFSET
|
||||
|
||||
DirectoryList:
|
||||
4 CARD32 N_DIRECTORIES
|
||||
4*N_DIRECTORIES CARD32 DIRECTORY_OFFSET
|
||||
4 CARD32 N_DIRECTORIES
|
||||
4*N_DIRECTORIES CARD32 DIRECTORY_OFFSET
|
||||
|
||||
Hash:
|
||||
4 CARD32 N_BUCKETS
|
||||
4*N_BUCKETS CARD32 ICON_OFFSET
|
||||
4 CARD32 N_BUCKETS
|
||||
4*N_BUCKETS CARD32 ICON_OFFSET
|
||||
|
||||
Icon:
|
||||
4 CARD32 CHAIN_OFFSET
|
||||
4 CARD32 NAME_OFFSET
|
||||
4 CARD32 IMAGE_LIST_OFFSET
|
||||
4 CARD32 CHAIN_OFFSET
|
||||
4 CARD32 NAME_OFFSET
|
||||
4 CARD32 IMAGE_LIST_OFFSET
|
||||
|
||||
ImageList:
|
||||
4 CARD32 N_IMAGES
|
||||
8*N_IMAGES Image IMAGES
|
||||
4 CARD32 N_IMAGES
|
||||
8*N_IMAGES Image IMAGES
|
||||
|
||||
Image:
|
||||
2 CARD16 DIRECTORY_INDEX
|
||||
2 ICON_FLAGS FLAGS
|
||||
4 CARD32 IMAGE_DATA_OFFSET
|
||||
2 CARD16 DIRECTORY_INDEX
|
||||
2 ICON_FLAGS FLAGS
|
||||
4 CARD32 IMAGE_DATA_OFFSET
|
||||
|
||||
ICON_FLAGS
|
||||
HAS_SUFFIX_PNG 1
|
||||
|
|
@ -111,7 +111,7 @@ DisplayNameList:
|
|||
DisplayName:
|
||||
4 CARD32 DISPLAY_LANG_OFFSET
|
||||
4 CARD32 DISPLAY_NAME_OFFSET
|
||||
|
||||
|
||||
|
||||
Notes:
|
||||
|
||||
|
|
@ -123,7 +123,7 @@ Notes:
|
|||
|
||||
* All numbers are in network (big-endian) order. This is
|
||||
necessary because the data will be stored in arch-independent
|
||||
directories like /usr/share/icons or even in user's
|
||||
directories like /usr/share/icons or even in user's
|
||||
home directories.
|
||||
|
||||
* The hash function is that used by g_str_hash()
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ ref_count is *always* decremented, tho. Be careful.
|
|||
Remark: When writing NO_WINDOW widgets, care should be taken about
|
||||
proper referencing/unreferencing of the parent's GdkWindow
|
||||
that is used by the widget.
|
||||
|
||||
|
||||
GdkPixmap
|
||||
---------
|
||||
|
||||
|
|
@ -184,15 +184,15 @@ GtkOptionMenu looks like this:
|
|||
option_menu = gtk_option_menu_new ();
|
||||
/* option_menu->ref_count == 1 and it is flagged as `floating'.
|
||||
*/
|
||||
|
||||
|
||||
gtk_container_add (window, option_menu);
|
||||
/* option_menu->ref_count still == 1, but it is no longer `floating'.
|
||||
*/
|
||||
|
||||
|
||||
menu = gtk_menu_new ();
|
||||
/* menu->ref_count == 1 and it is flagged as `floating'.
|
||||
*/
|
||||
|
||||
|
||||
menu_item = gtk_menu_item_new_with_label ("Choose Me");
|
||||
/* menu_item->ref_count == 1 and it is flagged as `floating'.
|
||||
*/
|
||||
|
|
@ -200,7 +200,7 @@ GtkOptionMenu looks like this:
|
|||
gtk_menu_append (GTK_MENU (menu), menu_item);
|
||||
/* menu_item->ref_count still == 1, but it is no longer `floating'.
|
||||
*/
|
||||
|
||||
|
||||
gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), menu);
|
||||
/* menu->ref_count still == 1, but it is no longer `floating'.
|
||||
*/
|
||||
|
|
@ -277,13 +277,13 @@ Example code sequences that require reference wraps:
|
|||
while (slist)
|
||||
{
|
||||
GSList *tmp;
|
||||
|
||||
|
||||
tmp = slist;
|
||||
slist = slist->next;
|
||||
g_object_unref (GTK_WIDGET (tmp->data));
|
||||
g_slist_free_1 (tmp);
|
||||
}
|
||||
|
||||
|
||||
/* Alternatively to the removal above you could just use
|
||||
* gtk_list_remove_items_no_unref() which will add the additional
|
||||
* reference count to the widget.
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ IGNORE_HFILES= \
|
|||
|
||||
# Extra files to add when scanning (relative to $srcdir)
|
||||
EXTRA_HFILES= \
|
||||
../../../gdk/x11/gdkx.h
|
||||
../../../gdk/x11/gdkx.h
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling scan program. Only needed
|
||||
# if $(DOC_MODULE).types is non-empty.
|
||||
|
|
@ -139,7 +139,7 @@ HTML_IMAGES = \
|
|||
images/umbrella.png \
|
||||
images/ur_angle.png \
|
||||
images/watch.png \
|
||||
images/xterm.png
|
||||
images/xterm.png
|
||||
|
||||
# Extra options to supply to gtkdoc-fixref
|
||||
FIXXREF_OPTIONS= \
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@ DOC_MODULE=gtk2
|
|||
DOC_MAIN_SGML_FILE=gtk-docs.sgml
|
||||
|
||||
# Extra options to supply to gtkdoc-scan
|
||||
SCAN_OPTIONS=--deprecated-guards="GTK_ENABLE_BROKEN|GTK_DISABLE_DEPRECATED"
|
||||
SCAN_OPTIONS=--deprecated-guards="GTK_ENABLE_BROKEN|GTK_DISABLE_DEPRECATED"
|
||||
|
||||
# Extra options to pass to gtkdoc-scangobj
|
||||
SCANGOBJ_OPTIONS=--type-init-func="gtk_type_init(0)"
|
||||
SCANGOBJ_OPTIONS=--type-init-func="gtk_type_init(0)"
|
||||
|
||||
# The directory containing the source code. Relative to $(srcdir)
|
||||
DOC_SOURCE_DIR=../../../gtk
|
||||
|
|
@ -370,7 +370,7 @@ if ENABLE_MAN
|
|||
|
||||
man_MANS = gtk-query-immodules-2.0.1 gtk-update-icon-cache.1 gtk-builder-convert.1
|
||||
|
||||
%.1 : %.xml
|
||||
%.1 : %.xml
|
||||
@XSLTPROC@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
|
||||
|
||||
BUILT_EXTRA_DIST = $(man_MANS)
|
||||
|
|
|
|||
|
|
@ -508,7 +508,7 @@ gtk_window_expose (GtkWidget *widget,
|
|||
GdkEventExpose *event)
|
||||
{
|
||||
if (!gtk_widget_get_app_paintable (widget))
|
||||
gtk_paint_flat_box (widget->style, widget->window, GTK_STATE_NORMAL,
|
||||
gtk_paint_flat_box (widget->style, widget->window, GTK_STATE_NORMAL,
|
||||
GTK_SHADOW_NONE, event->area, widget, "base", 0, 0, -1, -1);
|
||||
|
||||
if (GTK_WIDGET_CLASS (gtk_window_parent_class)->expose_event)
|
||||
|
|
|
|||
|
|
@ -52,10 +52,10 @@
|
|||
<glossdef>
|
||||
<para>
|
||||
GTK+ contains several widgets which display data in columns,
|
||||
e.g. the #GtkTreeView.
|
||||
These <glossterm linkend="view-column">view columns</glossterm> in
|
||||
e.g. the #GtkTreeView.
|
||||
These <glossterm linkend="view-column">view columns</glossterm> in
|
||||
the tree view are represented by #GtkTreeViewColumn
|
||||
objects inside GTK+. They should not be confused with
|
||||
objects inside GTK+. They should not be confused with
|
||||
<glossterm linkend="model-column">model columns</glossterm> which
|
||||
are used to organize the data in tree models.
|
||||
</para>
|
||||
|
|
@ -72,10 +72,10 @@
|
|||
<emphasis>parent</emphasis> of the <emphasis>child</emphasis>
|
||||
widgets. Some containers don't draw anything on their own,
|
||||
but rather just organize their children's <glossterm
|
||||
linkend="geometry">geometry</glossterm>; for example, #GtkVBox lays out
|
||||
linkend="geometry">geometry</glossterm>; for example, #GtkVBox lays out
|
||||
its children vertically without painting anything on its own. Other
|
||||
containers include decorative elements; for example, #GtkFrame contains
|
||||
the frame's child and a label in addition to the shaded frame it draws.
|
||||
containers include decorative elements; for example, #GtkFrame contains
|
||||
the frame's child and a label in addition to the shaded frame it draws.
|
||||
The base class for containers is #GtkContainer.
|
||||
</para>
|
||||
<glossseealso>
|
||||
|
|
@ -91,8 +91,8 @@
|
|||
<para>
|
||||
GDK inherited the concept of display from the X window system,
|
||||
which considers a display to be the combination
|
||||
of a keyboard, a pointing device and one or more
|
||||
<glossterm linkend="screen">screens</glossterm>.
|
||||
of a keyboard, a pointing device and one or more
|
||||
<glossterm linkend="screen">screens</glossterm>.
|
||||
Applications open a display to show windows and interact with the user.
|
||||
In GDK, a display is represented by a #GdkDisplay.
|
||||
</para>
|
||||
|
|
@ -115,7 +115,7 @@
|
|||
<glossdef>
|
||||
<para>
|
||||
Events are the way in which GDK informs GTK+ about external events
|
||||
like pointer motion, button clicks, key presses, etc.
|
||||
like pointer motion, button clicks, key presses, etc.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
|
@ -160,9 +160,9 @@
|
|||
<glossterm>model column</glossterm>
|
||||
<glossdef>
|
||||
<para>
|
||||
A column in a tree model, holding data of a certain type.
|
||||
The types which can be stored in the columns of a model
|
||||
have to be specified when the model is constructed, see
|
||||
A column in a tree model, holding data of a certain type.
|
||||
The types which can be stored in the columns of a model
|
||||
have to be specified when the model is constructed, see
|
||||
e.g. gtk_list_store_new().
|
||||
</para>
|
||||
<glossseealso>
|
||||
|
|
@ -176,14 +176,14 @@
|
|||
<glossdef>
|
||||
<para>
|
||||
These widgets follow the well-known model-view pattern, which separates
|
||||
the data (the model) to be displayed from the component which does the
|
||||
actual visualization (the view). Examples of this pattern in GTK+ are
|
||||
the data (the model) to be displayed from the component which does the
|
||||
actual visualization (the view). Examples of this pattern in GTK+ are
|
||||
the #GtkTreeView/#GtkTreeModel and #GtkTextView/#GtkTextBuffer
|
||||
</para>
|
||||
<para>
|
||||
One important advantage of this pattern is that it is possible to
|
||||
display the same model in multiple views; another one that the
|
||||
separation of the model allows a great deal of flexibility, as
|
||||
One important advantage of this pattern is that it is possible to
|
||||
display the same model in multiple views; another one that the
|
||||
separation of the model allows a great deal of flexibility, as
|
||||
demonstrated by e.g. #GtkTreeModelSort or #GtkTreeModelFilter.
|
||||
</para>
|
||||
</glossdef>
|
||||
|
|
@ -231,8 +231,8 @@
|
|||
|
||||
<para>
|
||||
Widgets that don't own the GdkWindow on which they draw are
|
||||
called <glossterm linkend="no-window">no-window widgets</glossterm>.
|
||||
This can be tested with the GTK_WIDGET_NO_WINDOW() macro. Normally,
|
||||
called <glossterm linkend="no-window">no-window widgets</glossterm>.
|
||||
This can be tested with the GTK_WIDGET_NO_WINDOW() macro. Normally,
|
||||
these widgets draw on their parent's GdkWindow.
|
||||
</para>
|
||||
|
||||
|
|
@ -268,9 +268,9 @@
|
|||
<glossterm>screen</glossterm>
|
||||
<glossdef>
|
||||
<para>
|
||||
GDK inherited the concept of screen from the X window system,
|
||||
which considers a screen to be a rectangular area, on which
|
||||
applications may place their windows. Screens under X may have
|
||||
GDK inherited the concept of screen from the X window system,
|
||||
which considers a screen to be a rectangular area, on which
|
||||
applications may place their windows. Screens under X may have
|
||||
quite dissimilar <glossterm linkend="visual">visuals</glossterm>.
|
||||
Each screen can stretch across multiple physical monitors.
|
||||
</para>
|
||||
|
|
@ -285,7 +285,7 @@
|
|||
<glossdef>
|
||||
<para>
|
||||
A style encapsulates what GTK+ needs to know in order to draw
|
||||
a widget. Styles can be modified with
|
||||
a widget. Styles can be modified with
|
||||
<link linkend="gtk-Resource-Files">resource files</link>.
|
||||
</para>
|
||||
</glossdef>
|
||||
|
|
@ -296,7 +296,7 @@
|
|||
<glossdef>
|
||||
<para>
|
||||
A <glossterm linkend="widget">widget</glossterm> that does not
|
||||
require a <glossterm linkend="parent">parent</glossterm> container.
|
||||
require a <glossterm linkend="parent">parent</glossterm> container.
|
||||
The only toplevel widgets in GTK+ are #GtkWindow and widgets derived from it.
|
||||
</para>
|
||||
<glossseealso>
|
||||
|
|
@ -327,7 +327,7 @@
|
|||
</glossseealso>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
|
||||
<glossentry id="visual">
|
||||
<glossterm>visual</glossterm>
|
||||
<glossdef>
|
||||
|
|
@ -335,17 +335,17 @@
|
|||
A visual describes how color information is stored in pixels.
|
||||
A <glossterm linkend="screen">screen</glossterm> may support
|
||||
multiple visuals. On modern hardware, the most common visuals
|
||||
are truecolor visuals, which store a fixed number of bits
|
||||
are truecolor visuals, which store a fixed number of bits
|
||||
(typically 8) for the red, green and blue components of a color.
|
||||
</para>
|
||||
<para>
|
||||
On ancient hardware, one may still meet indexed visuals, which
|
||||
On ancient hardware, one may still meet indexed visuals, which
|
||||
store color information as an index into a color map, or even
|
||||
monochrome visuals.
|
||||
monochrome visuals.
|
||||
</para>
|
||||
</glossdef>
|
||||
</glossentry>
|
||||
|
||||
|
||||
<glossentry id="widget">
|
||||
<glossterm>widget</glossterm>
|
||||
<glossdef>
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ its output the file specified as the second argument.
|
|||
<varlistentry>
|
||||
<term>--root</term>
|
||||
<term>-r</term>
|
||||
<listitem><para>Convert only the widget named <replaceable>name</replaceable>
|
||||
<listitem><para>Convert only the widget named <replaceable>name</replaceable>
|
||||
and its children.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ input method modules for GTK+ and writes it to the default cache file
|
|||
location, or to <filename>stdout</filename>.
|
||||
</para>
|
||||
<para>
|
||||
If called without arguments, it looks for modules in the GTK+ input method
|
||||
module path.
|
||||
If called without arguments, it looks for modules in the GTK+ input method
|
||||
module path.
|
||||
</para>
|
||||
<para>
|
||||
If called with arguments, it looks for the specified modules. The arguments
|
||||
|
|
@ -56,8 +56,8 @@ can be set to point GTK+ at the file.
|
|||
|
||||
<refsect1><title>Environment</title>
|
||||
<para>
|
||||
The environment variable <link linkend="GTK_PATH"><envar>GTK_PATH</envar></link> can
|
||||
be used to prepend directories to the input method module path.
|
||||
The environment variable <link linkend="GTK_PATH"><envar>GTK_PATH</envar></link> can
|
||||
be used to prepend directories to the input method module path.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
|
|
|
|||
|
|
@ -32,11 +32,11 @@
|
|||
|
||||
<refsect1><title>Description</title>
|
||||
<para><command>gtk-update-icon-cache</command> creates mmap()able cache files for
|
||||
icon themes.
|
||||
icon themes.
|
||||
</para>
|
||||
<para>
|
||||
It expects to be given the path to a icon theme directory containing an
|
||||
<filename>index.theme</filename>, e.g. <filename>/usr/share/icons/hicolor</filename>,
|
||||
<filename>index.theme</filename>, e.g. <filename>/usr/share/icons/hicolor</filename>,
|
||||
and writes a <filename>icon-theme.cache</filename> containing cached information
|
||||
about the icons in the directory tree below the given directory.
|
||||
</para>
|
||||
|
|
@ -53,7 +53,7 @@ multiple applications, the overall memory consumption is reduced as well.
|
|||
<varlistentry>
|
||||
<term>--force</term>
|
||||
<term>-f</term>
|
||||
<listitem><para>Overwrite an existing cache file even if it appears to be
|
||||
<listitem><para>Overwrite an existing cache file even if it appears to be
|
||||
uptodate.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ multiple applications, the overall memory consumption is reduced as well.
|
|||
<listitem><para>Don't check for the existence of 'index.theme' in the icon theme
|
||||
directory. Without this option, <command>gtk-update-icon-cache</command> refuses
|
||||
to create an icon cache in a directory which does not appear to be the toplevel
|
||||
directory of an icon theme.
|
||||
directory of an icon theme.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
|
@ -83,15 +83,15 @@ multiple applications, the overall memory consumption is reduced as well.
|
|||
<varlistentry>
|
||||
<term>--source</term>
|
||||
<term>-c</term>
|
||||
<listitem><para>Output a C header file declaring a constant
|
||||
<replaceable>name</replaceable> with the contents of the icon
|
||||
<listitem><para>Output a C header file declaring a constant
|
||||
<replaceable>name</replaceable> with the contents of the icon
|
||||
cache.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>--quiet</term>
|
||||
<term>-q</term>
|
||||
<listitem><para>Turn off verbose output.
|
||||
<listitem><para>Turn off verbose output.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
|
|
|||
|
|
@ -270,10 +270,10 @@ gtk_action_group_add_action_with_accel
|
|||
gtk_action_group_remove_action
|
||||
GtkActionEntry
|
||||
gtk_action_group_add_actions
|
||||
gtk_action_group_add_actions_full
|
||||
gtk_action_group_add_actions_full
|
||||
GtkToggleActionEntry
|
||||
gtk_action_group_add_toggle_actions
|
||||
gtk_action_group_add_toggle_actions_full
|
||||
gtk_action_group_add_toggle_actions_full
|
||||
GtkRadioActionEntry
|
||||
gtk_action_group_add_radio_actions
|
||||
gtk_action_group_add_radio_actions_full
|
||||
|
|
@ -1358,7 +1358,7 @@ gtk_entry_set_icon_from_icon_name
|
|||
gtk_entry_set_icon_from_gicon
|
||||
gtk_entry_get_icon_storage_type
|
||||
gtk_entry_get_icon_pixbuf
|
||||
gtk_entry_get_icon_stock
|
||||
gtk_entry_get_icon_stock
|
||||
gtk_entry_get_icon_name
|
||||
gtk_entry_get_icon_gicon
|
||||
gtk_entry_set_icon_activatable
|
||||
|
|
@ -2045,7 +2045,7 @@ gtk_icon_view_unset_model_drag_source
|
|||
gtk_icon_view_unset_model_drag_dest
|
||||
gtk_icon_view_set_reorderable
|
||||
gtk_icon_view_get_reorderable
|
||||
gtk_icon_view_set_drag_dest_item
|
||||
gtk_icon_view_set_drag_dest_item
|
||||
gtk_icon_view_get_drag_dest_item
|
||||
gtk_icon_view_get_dest_item_at_pos
|
||||
gtk_icon_view_create_drag_icon
|
||||
|
|
@ -2571,8 +2571,8 @@ gtk_menu_item_set_use_underline
|
|||
gtk_menu_item_set_submenu
|
||||
gtk_menu_item_get_submenu
|
||||
gtk_menu_item_remove_submenu
|
||||
gtk_menu_item_set_accel_path
|
||||
gtk_menu_item_get_accel_path
|
||||
gtk_menu_item_set_accel_path
|
||||
gtk_menu_item_get_accel_path
|
||||
gtk_menu_item_select
|
||||
gtk_menu_item_deselect
|
||||
gtk_menu_item_activate
|
||||
|
|
@ -6854,7 +6854,7 @@ gtk_print_operation_get_n_pages_to_print
|
|||
gtk_print_operation_set_current_page
|
||||
gtk_print_operation_set_use_full_page
|
||||
gtk_print_operation_set_unit
|
||||
gtk_print_operation_set_export_filename
|
||||
gtk_print_operation_set_export_filename
|
||||
gtk_print_operation_set_show_progress
|
||||
gtk_print_operation_set_track_print_status
|
||||
gtk_print_operation_set_custom_tab_label
|
||||
|
|
@ -6981,7 +6981,7 @@ GTK_PRINTER_GET_CLASS
|
|||
|
||||
<SUBSECTION Private>
|
||||
GtkPrinterPrivate
|
||||
gtk_printer_get_type
|
||||
gtk_printer_get_type
|
||||
</SECTION>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<para role="gallery">
|
||||
<link linkend="GtkAccelLabel">
|
||||
<inlinegraphic fileref="accel-label.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
</link>
|
||||
<link linkend="GtkButton">
|
||||
<inlinegraphic fileref="button.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
|
|
@ -56,16 +56,16 @@
|
|||
</link>
|
||||
<link linkend="GtkPaned">
|
||||
<inlinegraphic fileref="panes.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
</link>
|
||||
<link linkend="GtkVolumeButton">
|
||||
<inlinegraphic fileref="volumebutton.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
<link linkend="GtkPageSetupUnixDialog">
|
||||
<inlinegraphic fileref="pagesetupdialog.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
</link>
|
||||
<link linkend="GtkPrintUnixDialog">
|
||||
<inlinegraphic fileref="printdialog.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
</link>
|
||||
<link linkend="GtkProgressBar">
|
||||
<inlinegraphic fileref="progressbar.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
|
|
@ -101,7 +101,7 @@
|
|||
</link>
|
||||
<link linkend="GtkToolPalette">
|
||||
<inlinegraphic fileref="toolpalette.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
</link>
|
||||
<link linkend="GtkTreeView">
|
||||
<inlinegraphic fileref="list-and-tree.png" format="PNG"></inlinegraphic>
|
||||
</link>
|
||||
|
|
|
|||
|
|
@ -3,25 +3,25 @@ This is a list of things to check when testing window size/pos functions.
|
|||
|
||||
gtk_widget_set_size_request():
|
||||
- causes the widget to request the given size
|
||||
- for toplevel windows, changes the default-requested size if
|
||||
- for toplevel windows, changes the default-requested size if
|
||||
no default size is set and gtk_window_resize() has not been called
|
||||
- passing -1 for either width or height reverts to "natural" request
|
||||
in that dimension
|
||||
- passing 0 is allowed, and results in requisition of 1x1
|
||||
(0x0 is a permitted requisition, but equivalent to 1x1,
|
||||
- passing 0 is allowed, and results in requisition of 1x1
|
||||
(0x0 is a permitted requisition, but equivalent to 1x1,
|
||||
we use 1x1 for implementation convenience)
|
||||
- causes notifies on width_request, height_request properties
|
||||
|
||||
gtk_window_resize():
|
||||
- causes a configure request in all cases if the window is mapped,
|
||||
- causes a configure request in all cases if the window is mapped,
|
||||
unless the new size is the same as the old size
|
||||
- overrides the default size on map if the window is unmapped
|
||||
- allows size of 0, equivalent to 1
|
||||
- clamped to geometry hints
|
||||
|
||||
gtk_window_set_default_size():
|
||||
- has no effect after the window has been mapped the first time,
|
||||
unless the window has been unrealized in which case it should
|
||||
- has no effect after the window has been mapped the first time,
|
||||
unless the window has been unrealized in which case it should
|
||||
have an effect
|
||||
- allows size of 0, equivalent to 1
|
||||
- allows size of -1 to unset the default size
|
||||
|
|
@ -30,28 +30,28 @@ gtk_window_set_default_size():
|
|||
- causes notifies on default_width, default_height properties
|
||||
|
||||
gtk_window_get_default_size():
|
||||
- returns the values last passed to set_default_size(), including
|
||||
- returns the values last passed to set_default_size(), including
|
||||
-1. If set_default_size() has not been called, returns -1.
|
||||
|
||||
gtk_window_move():
|
||||
- always causes a configure request if the window is mapped,
|
||||
- always causes a configure request if the window is mapped,
|
||||
unless the last configure request we sent was for the same
|
||||
position being moved to
|
||||
- position may be negative to move windows offscreen
|
||||
- if GTK_WIN_POS_CENTER_ALWAYS (or other future position
|
||||
- if GTK_WIN_POS_CENTER_ALWAYS (or other future position
|
||||
constraints we may add) is in effect, the move
|
||||
request is clamped to obey the constraints. thus
|
||||
calling gtk_window_move() on a CENTER_ALWAYS window
|
||||
may trigger the window to bounce back to center if it
|
||||
calling gtk_window_move() on a CENTER_ALWAYS window
|
||||
may trigger the window to bounce back to center if it
|
||||
wasn't there
|
||||
- overrides all GTK_WIN_POS_ except CENTER_ALWAYS
|
||||
|
||||
gtk_window_get_size():
|
||||
- obtains the client-side known size of widget->window,
|
||||
- obtains the client-side known size of widget->window,
|
||||
as last received from a configure event
|
||||
- prior to mapping, returns the default size we will request
|
||||
- between realization and mapping, computes default size
|
||||
rather than looking at widget->window up-to-date size,
|
||||
- between realization and mapping, computes default size
|
||||
rather than looking at widget->window up-to-date size,
|
||||
so the size will be correct after force-realizing a window
|
||||
|
||||
gtk_window_get_position():
|
||||
|
|
@ -60,16 +60,16 @@ gtk_window_get_position():
|
|||
- round-trips to the server to get the position; this is suboptimal
|
||||
from both a race condition and speed standpoint but required to get
|
||||
window frame size
|
||||
- if the window is unmapped, returns the default position we will
|
||||
- if the window is unmapped, returns the default position we will
|
||||
request
|
||||
|
||||
gtk_window_set_position():
|
||||
- not the inverse of get_position(), sadly
|
||||
- modifies the default positioning of the window
|
||||
- if set to CENTER_ALWAYS and the window is mapped, results in a
|
||||
configure request moving the window to the center, unless the
|
||||
configure request moving the window to the center, unless the
|
||||
window was already centered
|
||||
- ignored if gtk_window_move() called, with the exception
|
||||
- ignored if gtk_window_move() called, with the exception
|
||||
of CENTER_ALWAYS
|
||||
|
||||
gtk_window_parse_geometry():
|
||||
|
|
@ -81,8 +81,8 @@ gtk_window_parse_geometry():
|
|||
- calls gtk_window_set_gravity() to set the window gravity
|
||||
|
||||
gtk_window_reshow_with_initial_size():
|
||||
- for use by GUI builders; unrealizes and re-shows the window,
|
||||
using default size (and also position, but position
|
||||
- for use by GUI builders; unrealizes and re-shows the window,
|
||||
using default size (and also position, but position
|
||||
is reset on any hide anyway)
|
||||
- window should be positioned and sized as it was on initial map,
|
||||
barring odd window managers
|
||||
|
|
@ -94,22 +94,22 @@ gtk_window_set_geometry_hints():
|
|||
General behavior
|
||||
===
|
||||
|
||||
- no infinite loops or nasty fighting-the-user flicker during
|
||||
- no infinite loops or nasty fighting-the-user flicker during
|
||||
operations such as moving/resizing a window
|
||||
|
||||
Properties
|
||||
===
|
||||
|
||||
GtkWindow::default_width, GtkWindow::default_height:
|
||||
- default_width is -1 if unset, or >= 0 if
|
||||
- default_width is -1 if unset, or >= 0 if
|
||||
a default width is set
|
||||
- default_height is -1 if unset, or >= 0 if
|
||||
a default height is set
|
||||
|
||||
GtkWindow::allow_grow, GtkWindow::resizable:
|
||||
- equivalent properties; changing one notifies on the other
|
||||
- if FALSE, we set the min size to the max size in the geometry
|
||||
hints.
|
||||
- if FALSE, we set the min size to the max size in the geometry
|
||||
hints.
|
||||
- If the app programmer has called gtk_window_set_geometry_hints()
|
||||
however and set min or max size, we don't replace the hint they
|
||||
set.
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ GtkWidget::style_set
|
|||
style->bg. (e.g., GtkListItem)
|
||||
- the widget provides windows other than widget->window.
|
||||
- the widget has any other stored dependencies on the style.
|
||||
|
||||
|
||||
|
||||
|
||||
Flag indications:
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ Subject: [gtk-list] gtktext widget internal documentation
|
|||
Pete convinced me to just write up the text widget and let someone else
|
||||
finish it. I'm pretty busy and have other commitments now. Sorry. I think
|
||||
I'm not the most qualified for some of the remaining work anyway, because I
|
||||
don't really know Gtk and it's event model very well. Most of the work so
|
||||
far was possible without knowing Gtk all that well, it was simply a data
|
||||
don't really know Gtk and it's event model very well. Most of the work so
|
||||
far was possible without knowing Gtk all that well, it was simply a data
|
||||
structure exercise (though after reading this you might say it was a fairly
|
||||
complicated data structure exercise). I'm happy to answer questions.
|
||||
|
||||
|
|
@ -166,7 +166,7 @@ often, the last index is treated as a newline.
|
|||
length 1 unless there are no other characters in the text. That
|
||||
is, its properties are always that of the preceding character,
|
||||
if any.
|
||||
|
||||
|
||||
There is a fair bit of special case code to maintain this condition -
|
||||
which is needed so that user has control over the properties of
|
||||
characters inserted at the last position. OWT 2/9/98 ]
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ the paragraph break char may be more than one byte.)
|
|||
|
||||
The idea of the btree is something like:
|
||||
|
||||
|
||||
|
||||
------ Node (lines = 6)
|
||||
/ Line 0
|
||||
/ Line 1
|
||||
|
|
@ -40,7 +40,7 @@ The idea of the btree is something like:
|
|||
/ Line 3
|
||||
/ Line 4
|
||||
/ Line 5
|
||||
Node (lines = 12)
|
||||
Node (lines = 12)
|
||||
\
|
||||
\---------- Node (lines = 6)
|
||||
Line 6
|
||||
|
|
@ -49,7 +49,7 @@ The idea of the btree is something like:
|
|||
Line 9
|
||||
Line 10
|
||||
Line 11
|
||||
|
||||
|
||||
|
||||
In addition to keeping aggregate line counts at each node, we count
|
||||
characters, and information about the tag toggles appearing below each
|
||||
|
|
@ -59,16 +59,16 @@ Structure of a GtkTextLine
|
|||
===
|
||||
|
||||
A GtkTextLine contains a single paragraph of text. It should probably
|
||||
be renamed GtkTextPara someday but ah well. GtkTextLine is used for
|
||||
be renamed GtkTextPara someday but ah well. GtkTextLine is used for
|
||||
the leaf nodes of the BTree.
|
||||
|
||||
A line is a list of GtkTextLineSegment. Line segments contain the
|
||||
actual data found in the text buffer.
|
||||
|
||||
|
||||
Here are the types of line segment (see gtktextsegment.h,
|
||||
gtktextchild.h, etc.):
|
||||
|
||||
Character: contains a block of UTF-8 text.
|
||||
Character: contains a block of UTF-8 text.
|
||||
|
||||
Mark: marks a position in the buffer, such as a cursor.
|
||||
|
||||
|
|
@ -78,13 +78,13 @@ gtktextchild.h, etc.):
|
|||
range, and a toggle off at the end. (and do any
|
||||
necessary merging with existing toggles, so we
|
||||
always have the minimum number possible)
|
||||
|
||||
Child widget: stores a child widget that behaves as a single
|
||||
|
||||
Child widget: stores a child widget that behaves as a single
|
||||
Unicode character from an editing perspective.
|
||||
(well, stores a list of child widgets, one per
|
||||
(well, stores a list of child widgets, one per
|
||||
GtkTextView displaying the buffer)
|
||||
|
||||
Image: stores a GdkPixbuf that behaves as a single
|
||||
Image: stores a GdkPixbuf that behaves as a single
|
||||
character from an editing perspective.
|
||||
|
||||
|
||||
|
|
@ -96,40 +96,40 @@ The functions in the class are:
|
|||
|
||||
- DeleteFunc, finalizes the segment
|
||||
|
||||
- CleanupFunc, after modifying a line by adding/removing segments,
|
||||
this function is used to try merging segments that can be merged,
|
||||
e.g. two adjacent character segments with no marks or toggles
|
||||
- CleanupFunc, after modifying a line by adding/removing segments,
|
||||
this function is used to try merging segments that can be merged,
|
||||
e.g. two adjacent character segments with no marks or toggles
|
||||
in between.
|
||||
|
||||
- LineChangeFunc, called when a segment moves to a different line;
|
||||
according to comments in the code this function may not be needed
|
||||
anymore.
|
||||
|
||||
- SegCheckFunc, does sanity-checking when debugging is enabled.
|
||||
|
||||
- SegCheckFunc, does sanity-checking when debugging is enabled.
|
||||
Basically equivalent to assert(segment is not broken).
|
||||
|
||||
The segment class also contains two data fields:
|
||||
|
||||
|
||||
- the name of the segment type, used for debugging
|
||||
|
||||
- a boolean flag for whether the segment has right or left
|
||||
- a boolean flag for whether the segment has right or left
|
||||
gravity. A segment with right gravity ends up on the right of a
|
||||
newly-inserted segment that's placed at the same character offset,
|
||||
and a segment with left gravity ends up on the left of a
|
||||
newly-inserted segment. For example the insertion cursor
|
||||
has right gravity, because as you type new text is inserted,
|
||||
newly-inserted segment. For example the insertion cursor
|
||||
has right gravity, because as you type new text is inserted,
|
||||
and the cursor ends up on the right.
|
||||
|
||||
The segment itself contains contains a header, plus some
|
||||
variable-length data that depends on the type of the segment.
|
||||
variable-length data that depends on the type of the segment.
|
||||
The header contains the length of the segment in characters and in
|
||||
bytes. Some segments have a length of zero. Segments with nonzero
|
||||
length are referred to as "indexable" and would generally be
|
||||
user-visible; indexable segments include text, images, and widgets.
|
||||
user-visible; indexable segments include text, images, and widgets.
|
||||
Segments with zero length occupy positions between characters, and
|
||||
include marks and tag toggles.
|
||||
|
||||
The GtkText*Body structs are the type-specific portions of
|
||||
The GtkText*Body structs are the type-specific portions of
|
||||
GtkTextSegment.
|
||||
|
||||
Character segments have the actual character data allocated in the
|
||||
|
|
@ -174,14 +174,14 @@ there was some idea that a view could be any object, so there are some
|
|||
that all views had to be a GtkTextLayout and so the btree does assume
|
||||
that from time to time.
|
||||
|
||||
The BTree maintains some per-line and per-node data that is specific
|
||||
The BTree maintains some per-line and per-node data that is specific
|
||||
to each view. The per-line data is in GtkTextLineData and the per-node
|
||||
data is in another badly-named struct called NodeData (should be
|
||||
PerViewNodeData or something). The purpose of these is to store:
|
||||
|
||||
- aggregate height, so we can calculate the Y position of each
|
||||
paragraph in O(log N) time, and can get the full height
|
||||
of the buffer in O(1) time. The height is per-view since
|
||||
paragraph in O(log N) time, and can get the full height
|
||||
of the buffer in O(1) time. The height is per-view since
|
||||
each GtkTextView may have a different size allocation.
|
||||
|
||||
- maximum width (the longest line), so we can calculate the width of
|
||||
|
|
@ -216,13 +216,13 @@ chars_changed_stamp different from the current stamp of the BTree.
|
|||
That is, you can't use an iterator after adding/removing characters.
|
||||
|
||||
The "segments_changed_stamp" is incremented any time we change any
|
||||
segments, and tells outstanding iterators that any pointers to
|
||||
GtkTextSegment that they may be holding are now invalid. For example,
|
||||
segments, and tells outstanding iterators that any pointers to
|
||||
GtkTextSegment that they may be holding are now invalid. For example,
|
||||
if you are iterating over a character segment, and insert a mark in
|
||||
the middle of the segment, the character segment will be split in half
|
||||
and the original segment will be freed. This increments
|
||||
segments_changed_stamp, causing your iterator to drop its current
|
||||
segment pointer and count from the beginning of the line again to find
|
||||
segment pointer and count from the beginning of the line again to find
|
||||
the new segment.
|
||||
|
||||
Iterators also cache some random information such as the current line
|
||||
|
|
@ -242,28 +242,28 @@ width and height) by converting the lines to a PangoLayout and using
|
|||
Pango functions. GtkTextLayout is also used for visual iteration, and
|
||||
mapping visual locations to logical buffer positions.
|
||||
|
||||
Validating a line involves creating the GtkTextLineDisplay for that
|
||||
Validating a line involves creating the GtkTextLineDisplay for that
|
||||
line. To save memory, GtkTextLineDisplay objects are always created
|
||||
transiently, we don't keep them around.
|
||||
|
||||
The layout has three signals:
|
||||
|
||||
- "invalidated" means some line was changed, so GtkTextView
|
||||
- "invalidated" means some line was changed, so GtkTextView
|
||||
needs to install idle handlers to revalidate.
|
||||
|
||||
- "changed" means some lines were validated, so the aggregate
|
||||
width/height of the BTree is now different.
|
||||
|
||||
- "allocate_child" means we need to size allocate a
|
||||
- "allocate_child" means we need to size allocate a
|
||||
child widget
|
||||
|
||||
gtk_text_layout_get_line_display() is sort of the "heart" of
|
||||
GtkTextLayout. This function validates a line.
|
||||
GtkTextLayout. This function validates a line.
|
||||
|
||||
Line validation involves:
|
||||
|
||||
- convert any GtkTextTag on the line to PangoAttrList
|
||||
|
||||
|
||||
- add the preedit string
|
||||
|
||||
- keep track of "visible marks" (the cursor)
|
||||
|
|
@ -271,7 +271,7 @@ Line validation involves:
|
|||
A given set of tags is composited to a GtkTextAttributes. (In the Tk
|
||||
code this was called a "style" and there are still relics of this in
|
||||
the code, such as "invalidate_cached_style()", that should be cleaned
|
||||
up.)
|
||||
up.)
|
||||
|
||||
There's a single-GtkTextAttributes cache, "layout->one_style_cache",
|
||||
which is used to avoid recomputing the mapping from tags to attributes
|
||||
|
|
@ -282,8 +282,8 @@ may change the current style (such as a tag toggle), the cache has to
|
|||
be dropped.
|
||||
|
||||
To compute a GtkTextAttributes from the GtkTextTag that apply to a
|
||||
given segment, the function is _gtk_text_attributes_fill_from_tags().
|
||||
This "mashes" a list of tags into a single set of text attributes.
|
||||
given segment, the function is _gtk_text_attributes_fill_from_tags().
|
||||
This "mashes" a list of tags into a single set of text attributes.
|
||||
If no tags affect a given attribute, a default set of attributes are
|
||||
used. These defaults sometimes come from widget->style on the
|
||||
GtkTextView, and sometimes come from a property of the GtkTextView
|
||||
|
|
@ -292,7 +292,7 @@ such as "pixels_above_lines"
|
|||
GtkTextView
|
||||
===
|
||||
|
||||
Once you get GtkTextLayout and GtkTextBTree the actual GtkTextView
|
||||
Once you get GtkTextLayout and GtkTextBTree the actual GtkTextView
|
||||
widget is not that complicated.
|
||||
|
||||
The main complexity is the interaction between scrolling and line
|
||||
|
|
|
|||
|
|
@ -27,13 +27,13 @@ create_blur_filter (int radius)
|
|||
ConvFilter *filter;
|
||||
int x, y;
|
||||
double sum;
|
||||
|
||||
|
||||
filter = g_new0 (ConvFilter, 1);
|
||||
filter->size = radius * 2 + 1;
|
||||
filter->data = g_new (double, filter->size * filter->size);
|
||||
|
||||
sum = 0.0;
|
||||
|
||||
|
||||
for (y = 0 ; y < filter->size; y++)
|
||||
{
|
||||
for (x = 0 ; x < filter->size; x++)
|
||||
|
|
@ -53,7 +53,7 @@ create_blur_filter (int radius)
|
|||
}
|
||||
|
||||
return filter;
|
||||
|
||||
|
||||
}
|
||||
|
||||
static GdkPixbuf *
|
||||
|
|
@ -65,12 +65,12 @@ create_shadow (GdkPixbuf *src)
|
|||
static ConvFilter *filter = NULL;
|
||||
int src_rowstride, dest_rowstride;
|
||||
int src_bpp, dest_bpp;
|
||||
|
||||
|
||||
guchar *src_pixels, *dest_pixels;
|
||||
|
||||
if (!filter)
|
||||
filter = create_blur_filter (BLUR_RADIUS);
|
||||
|
||||
|
||||
width = gdk_pixbuf_get_width (src) + BLUR_RADIUS * 2 + SHADOW_OFFSET;
|
||||
height = gdk_pixbuf_get_height (src) + BLUR_RADIUS * 2 + SHADOW_OFFSET;
|
||||
|
||||
|
|
@ -78,15 +78,15 @@ create_shadow (GdkPixbuf *src)
|
|||
gdk_pixbuf_get_has_alpha (src),
|
||||
gdk_pixbuf_get_bits_per_sample (src),
|
||||
width, height);
|
||||
gdk_pixbuf_fill (dest, 0);
|
||||
gdk_pixbuf_fill (dest, 0);
|
||||
src_pixels = gdk_pixbuf_get_pixels (src);
|
||||
src_rowstride = gdk_pixbuf_get_rowstride (src);
|
||||
src_bpp = gdk_pixbuf_get_has_alpha (src) ? 4 : 3;
|
||||
|
||||
|
||||
dest_pixels = gdk_pixbuf_get_pixels (dest);
|
||||
dest_rowstride = gdk_pixbuf_get_rowstride (dest);
|
||||
dest_bpp = gdk_pixbuf_get_has_alpha (dest) ? 4 : 3;
|
||||
|
||||
|
||||
for (y = 0; y < height; y++)
|
||||
{
|
||||
for (x = 0; x < width; x++)
|
||||
|
|
@ -110,19 +110,19 @@ create_shadow (GdkPixbuf *src)
|
|||
src_x * src_bpp + 0] *
|
||||
filter->data [i * filter->size + j];
|
||||
sumg += src_pixels [src_y * src_rowstride +
|
||||
src_x * src_bpp + 1] *
|
||||
src_x * src_bpp + 1] *
|
||||
filter->data [i * filter->size + j];
|
||||
|
||||
sumb += src_pixels [src_y * src_rowstride +
|
||||
src_x * src_bpp + 2] *
|
||||
src_x * src_bpp + 2] *
|
||||
filter->data [i * filter->size + j];
|
||||
|
||||
|
||||
if (src_bpp == 4)
|
||||
suma += src_pixels [src_y * src_rowstride +
|
||||
src_x * src_bpp + 3] *
|
||||
filter->data [i * filter->size + j];
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ create_shadow (GdkPixbuf *src)
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
|
|
@ -140,7 +140,7 @@ GdkPixbuf *
|
|||
create_shadowed_pixbuf (GdkPixbuf *src)
|
||||
{
|
||||
GdkPixbuf *dest;
|
||||
|
||||
|
||||
dest = create_shadow (src);
|
||||
|
||||
gdk_pixbuf_composite (src, dest,
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ remove_shaped_area (GdkPixbuf *pixbuf,
|
|||
retval = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8,
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
gdk_pixbuf_get_height (pixbuf));
|
||||
|
||||
|
||||
gdk_pixbuf_fill (retval, 0);
|
||||
rectangles = XShapeGetRectangles (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), window,
|
||||
ShapeBounding, &rectangle_count, &rectangle_order);
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ create_combo_box_entry (void)
|
|||
GtkWidget *align;
|
||||
GtkWidget *child;
|
||||
GtkTreeModel *model;
|
||||
|
||||
|
||||
gtk_rc_parse_string ("style \"combo-box-entry-style\" {\n"
|
||||
" GtkComboBox::appears-as-list = 1\n"
|
||||
"}\n"
|
||||
|
|
@ -308,7 +308,7 @@ create_combo_box (void)
|
|||
{
|
||||
GtkWidget *widget;
|
||||
GtkWidget *align;
|
||||
|
||||
|
||||
gtk_rc_parse_string ("style \"combo-box-style\" {\n"
|
||||
" GtkComboBox::appears-as-list = 0\n"
|
||||
"}\n"
|
||||
|
|
@ -333,9 +333,9 @@ create_recent_chooser_dialog (void)
|
|||
NULL,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
NULL);
|
||||
gtk_window_set_default_size (GTK_WINDOW (widget), 505, 305);
|
||||
|
||||
|
||||
info = new_widget_info ("recentchooserdialog", widget, ASIS);
|
||||
info->include_decorations = TRUE;
|
||||
|
||||
|
|
@ -633,11 +633,11 @@ create_colorsel (void)
|
|||
color.blue = 0x9595;
|
||||
|
||||
gtk_color_selection_set_previous_color (colorsel, &color);
|
||||
|
||||
|
||||
color.red = 0x7d7d;
|
||||
color.green = 0x9393;
|
||||
color.blue = 0xc3c3;
|
||||
|
||||
|
||||
gtk_color_selection_set_current_color (colorsel, &color);
|
||||
|
||||
info = new_widget_info ("colorsel", widget, ASIS);
|
||||
|
|
@ -670,9 +670,9 @@ create_filesel (void)
|
|||
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
|
||||
NULL);
|
||||
NULL);
|
||||
gtk_window_set_default_size (GTK_WINDOW (widget), 505, 305);
|
||||
|
||||
|
||||
info = new_widget_info ("filechooser", widget, ASIS);
|
||||
info->include_decorations = TRUE;
|
||||
|
||||
|
|
@ -685,7 +685,7 @@ create_print_dialog (void)
|
|||
WidgetInfo *info;
|
||||
GtkWidget *widget;
|
||||
|
||||
widget = gtk_print_unix_dialog_new ("Print Dialog", NULL);
|
||||
widget = gtk_print_unix_dialog_new ("Print Dialog", NULL);
|
||||
gtk_widget_set_size_request (widget, 505, 350);
|
||||
info = new_widget_info ("printdialog", widget, ASIS);
|
||||
info->include_decorations = TRUE;
|
||||
|
|
@ -703,7 +703,7 @@ create_page_setup_dialog (void)
|
|||
|
||||
page_setup = gtk_page_setup_new ();
|
||||
settings = gtk_print_settings_new ();
|
||||
widget = gtk_page_setup_unix_dialog_new ("Page Setup Dialog", NULL);
|
||||
widget = gtk_page_setup_unix_dialog_new ("Page Setup Dialog", NULL);
|
||||
gtk_page_setup_unix_dialog_set_page_setup (GTK_PAGE_SETUP_UNIX_DIALOG (widget),
|
||||
page_setup);
|
||||
gtk_page_setup_unix_dialog_set_print_settings (GTK_PAGE_SETUP_UNIX_DIALOG (widget),
|
||||
|
|
@ -845,7 +845,7 @@ create_notebook (void)
|
|||
|
||||
widget = gtk_notebook_new ();
|
||||
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (widget),
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (widget),
|
||||
gtk_label_new ("Notebook"),
|
||||
NULL);
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (widget), gtk_event_box_new (), NULL);
|
||||
|
|
@ -883,7 +883,7 @@ create_scrolledwindow (void)
|
|||
scrolledwin = gtk_scrolled_window_new (NULL, NULL);
|
||||
label = gtk_label_new ("Scrolled Window");
|
||||
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolledwin),
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolledwin),
|
||||
label);
|
||||
|
||||
return new_widget_info ("scrolledwindow", scrolledwin, MEDIUM);
|
||||
|
|
@ -964,7 +964,7 @@ create_image (void)
|
|||
GtkWidget *widget;
|
||||
GtkWidget *align, *vbox;
|
||||
|
||||
widget = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING,
|
||||
widget = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING,
|
||||
GTK_ICON_SIZE_DND);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 3);
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ if [ ! -d $BUILDDIR ]; then
|
|||
echo "mkdir of build directory failed"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! cd $BUILDDIR; then
|
||||
echo "cd to build directory failed"
|
||||
|
|
@ -68,7 +68,7 @@ tar cvfz $TARGETDIR/gtk-tutorial.sgml.tgz gtk-tutorial.sgml
|
|||
echo "done"
|
||||
|
||||
# HTML Format
|
||||
echo -n "Formatting into HTML.... "
|
||||
echo -n "Formatting into HTML.... "
|
||||
if [ ! -d gtk-tutorial.html ]; then
|
||||
if [ -e gtk-tutorial.html ]; then
|
||||
echo "ERROR: gtk-tutorial.html is not a directory"
|
||||
|
|
|
|||
|
|
@ -272,7 +272,7 @@ GtkButton
|
|||
=====================
|
||||
|
||||
NOTE: Due to a bug that is basically unfixable in a sufficiently compatible
|
||||
NOTE: way, the button gives the space requested for focus_width and
|
||||
NOTE: way, the button gives the space requested for focus_width and
|
||||
NOTE: focus_padding to the child (in addition to the space requested by
|
||||
NOTE: the child), if the button is !CAN_FOCUS.
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ and should work. It consists of three parts:
|
|||
|
||||
I) A description of the meaning of the various flags
|
||||
|
||||
II) A list of invariants about the states of the widgets.
|
||||
II) A list of invariants about the states of the widgets.
|
||||
(Throughout this document, we refer to the states of the
|
||||
widgets by referring to the flags for GtkWidget)
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ GTK_DESTROYED:
|
|||
This flagged is set for a GtkObject right before its
|
||||
destruction code is executed. Its main use is the
|
||||
prevention of multiple destruction invocations.
|
||||
|
||||
|
||||
GTK_FLOATING:
|
||||
This flag reflects the fact that the holder of the
|
||||
initial reference count is unknown. Refer to refcounting.txt
|
||||
|
|
@ -63,7 +63,7 @@ GTK_TOPLEVEL:
|
|||
Widgets without a real parent, as there are GtkWindows and
|
||||
GtkMenus have this flag set throughout their lifetime.
|
||||
Toplevel widgets always contain their own GdkWindow.
|
||||
|
||||
|
||||
GTK_NO_WINDOW:
|
||||
This flag is indicative for a widget that does not provide
|
||||
its own GdkWindow. Visible action (e.g. drawing) is performed
|
||||
|
|
@ -89,7 +89,7 @@ GTK_VISIBLE:
|
|||
Implies that a widget is not onscreen, therefore !GTK_MAPPED.
|
||||
|
||||
GTK_CHILD_VISIBLE
|
||||
Set by gtk_widget_set_child_visible, and if FALSE indicates that
|
||||
Set by gtk_widget_set_child_visible, and if FALSE indicates that
|
||||
the widget should not be mapped even if the parent is mapped
|
||||
and visible. Containers like GtkNotebook use this flag.
|
||||
A private flag, not a public flag, so if you need to check
|
||||
|
|
@ -120,7 +120,7 @@ GTK_HAS_FOCUS:
|
|||
This flag will be set by gtk_widget_grab_focus for widgets that also
|
||||
have GTK_CAN_FOCUS set. The flag will be unset once another widget
|
||||
grabs the focus.
|
||||
|
||||
|
||||
GTK_CAN_DEFAULT:
|
||||
GTK_HAS_DEFAULT:
|
||||
These two flags are mostly equal in functionality to their *_FOCUS
|
||||
|
|
@ -157,7 +157,7 @@ GTK_USER_STYLE:
|
|||
has been invoked for it. The use of this flag is to tell widgets
|
||||
which share a global user style from the ones which got a certain
|
||||
style assign from outside the toolkit.
|
||||
|
||||
|
||||
GTK_RESIZE_PENDING:
|
||||
First, this is only valid for GtkContainers.
|
||||
[some of the code should move to gtkcontainer.c therefore]
|
||||
|
|
@ -196,19 +196,19 @@ GTK_IN_REPARENT:
|
|||
process of getting unparented.
|
||||
|
||||
GTK_NEED_REQUEST:
|
||||
This flag is set if the widget doesn't have an up to date
|
||||
This flag is set if the widget doesn't have an up to date
|
||||
requisition. If this flag is set, we must actually emit ::size-request
|
||||
when gtk_widget_size_request() is called. Otherwise, we can
|
||||
simply widget->requisition. We keep track of this all the time
|
||||
however, widgets with this flag set are only added to the resize
|
||||
however, widgets with this flag set are only added to the resize
|
||||
queue if they are viewable.
|
||||
|
||||
GTK_NEED_ALLOCATION:
|
||||
This flag is set if the widget doesn't have an up to date
|
||||
This flag is set if the widget doesn't have an up to date
|
||||
allocation. If this flag is set, we must actually emit ::size-allocate
|
||||
when gtk_widget_size_allocate() is called, even if the new allocation
|
||||
is the same as the current allocation.
|
||||
|
||||
|
||||
Related Macros:
|
||||
|
||||
GTK_WIDGET_DRAWABLE:
|
||||
|
|
@ -224,7 +224,7 @@ GTK_WIDGET_IS_SENSITIVE:
|
|||
II. Invariants:
|
||||
---------------
|
||||
|
||||
This section describes various constraints on the states of
|
||||
This section describes various constraints on the states of
|
||||
the widget:
|
||||
|
||||
In the following
|
||||
|
|
@ -236,8 +236,8 @@ In the following
|
|||
|
||||
1) GTK_WIDGET_DESTROYED (widget) => !GTK_WIDGET_REALIZED (widget)
|
||||
=> !GTK_WIDGET_VISIBLE (widget)
|
||||
[ The latter is not currently in place, but it should be ]
|
||||
|
||||
[ The latter is not currently in place, but it should be ]
|
||||
|
||||
2) GTK_WIDGET_MAPPED (widget) => GTK_WIDGET_REALIZED (widget)
|
||||
|
||||
3) if GTK_WIDGET_TOPLEVEL (widget):
|
||||
|
|
@ -253,15 +253,15 @@ In the following
|
|||
=> GTK_WIDGET_CHILD_VISIBLE (widget)
|
||||
=> GTK_WIDGET_REALIZED (widget)
|
||||
|
||||
widget->parent && GTK_WIDGET_MAPPED (widget->parent) &&
|
||||
GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_CHILD_VISIBLE
|
||||
widget->parent && GTK_WIDGET_MAPPED (widget->parent) &&
|
||||
GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_CHILD_VISIBLE
|
||||
=> GTK_WIDGET_MAPPED (widget)
|
||||
|
||||
Note:, the definition
|
||||
|
||||
[ GTK_WIDGET_DRAWABLE = GTK_WIDGET_VISIBLE && GTK_WIDGET_MAPPED
|
||||
is made in gtkwidget.h, but by 3) and 5),
|
||||
|
||||
is made in gtkwidget.h, but by 3) and 5),
|
||||
|
||||
GTK_WIDGET_MAPPED => GTK_WIDGET_VISIBLE
|
||||
]
|
||||
|
||||
|
|
@ -277,9 +277,9 @@ How can the user control the state of a widget:
|
|||
-----------------------------------------------
|
||||
|
||||
(In the following, set flag means set the flag, do appropriate
|
||||
actions, and enforce above invariants)
|
||||
actions, and enforce above invariants)
|
||||
|
||||
gtk_widget_show:
|
||||
gtk_widget_show:
|
||||
if !GTK_DESTROYED sets GTK_VISIBLE
|
||||
|
||||
gtk_widget_hide:
|
||||
|
|
@ -295,14 +295,14 @@ gtk_widget_realize:
|
|||
of a toplevel is an ERROR.
|
||||
|
||||
gtk_container_add (container, widget) [ and container-specific variants ]
|
||||
Sets widget->parent
|
||||
Sets widget->parent
|
||||
|
||||
gtk_container_remove (container, widget)
|
||||
unsets widget->parent
|
||||
|
||||
gtk_widget_reparent (widget, new_parent)
|
||||
Equivalent to removing widget from old parent and adding it to
|
||||
the new parent, except that the widget will not be temporarily
|
||||
the new parent, except that the widget will not be temporarily
|
||||
unrealized if both the old parent and the new parent are realized.
|
||||
|
||||
|
||||
|
|
@ -329,7 +329,7 @@ Adding to a container
|
|||
|
||||
When a widget is added to a container, the container:
|
||||
|
||||
1) calls gtk_widget_set_parent_window (widget, window) if
|
||||
1) calls gtk_widget_set_parent_window (widget, window) if
|
||||
the widget is being added to something other than container->window
|
||||
2) calls gtk_widget_set_parent (widget, container)
|
||||
|
||||
|
|
@ -343,14 +343,14 @@ When a widget is removed to a container, the container:
|
|||
|
||||
Notes:
|
||||
|
||||
gtk_widget_unparent unrealizes the widget except in the
|
||||
gtk_widget_unparent unrealizes the widget except in the
|
||||
special case GTK_IN_REPARENT is set.
|
||||
|
||||
|
||||
At widget creation
|
||||
------------------
|
||||
|
||||
Widgets are created in an unrealized state.
|
||||
Widgets are created in an unrealized state.
|
||||
|
||||
1) The widget should allocate and initialize needed data structures
|
||||
|
||||
|
|
@ -383,7 +383,7 @@ The Map signal
|
|||
|
||||
1) Set the MAPPED flag
|
||||
2) If the widget has any windows, gdk_window_show those windows
|
||||
3) call gtk_widget_map for all child widgets that are
|
||||
3) call gtk_widget_map for all child widgets that are
|
||||
VISIBLE, CHILD_VISIBLE and !MAPPED. (A widget will only
|
||||
be !CHILD_VISIBLE if the container set it that way, so
|
||||
most containers will not have to check this.)
|
||||
|
|
@ -395,7 +395,7 @@ The Unmap signal
|
|||
|
||||
When a widget receives the unmap signal, it must:
|
||||
|
||||
1) If the widget has a window, gdk_window_hide that window,
|
||||
1) If the widget has a window, gdk_window_hide that window,
|
||||
2) If the widget does not have a window, unmap all child widgets
|
||||
3) Do any other functions related to taking the widget offscreen
|
||||
(for instance, removing popup windows...)
|
||||
|
|
@ -436,7 +436,7 @@ Commentary:
|
|||
back to the widget. (To use gtk_widget_get_data, for instance)
|
||||
If it does so via a pointer in a closure (natural for
|
||||
Scheme, or Perl), then the finalization procedure will never
|
||||
be called.
|
||||
be called.
|
||||
|
||||
Also, if we made that the finalization step, we would have
|
||||
to propagate the GDK_DESTROY event in any case, since it is
|
||||
|
|
@ -458,7 +458,7 @@ signal (but see the section on "Finalize" below)
|
|||
|
||||
The widget must handle calls to all publically accessible
|
||||
functions in an innocuous manner even after a "destroy"
|
||||
signal. (A widget can assume that it will not be realized
|
||||
signal. (A widget can assume that it will not be realized
|
||||
after a "destroy" signal is received, which may simplify
|
||||
handling this requirement)
|
||||
|
||||
|
|
@ -496,5 +496,5 @@ not Bar.
|
|||
Then gtk_foo_destroy will call gtk_widget_destroy (because
|
||||
it was not overridden in the Bar class structure) and
|
||||
gtk_widget_destroy will call gtk_object_destroy because
|
||||
the parent_class variable referenced by gtk_foo_destroy is the
|
||||
the parent_class variable referenced by gtk_foo_destroy is the
|
||||
static variable in gtkwidget.c: GtkObjectClass.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ static GtkWidget *create_arrow_button( GtkArrowType arrow_type,
|
|||
arrow = gtk_arrow_new (arrow_type, shadow_type);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (button), arrow);
|
||||
|
||||
|
||||
gtk_widget_show (button);
|
||||
gtk_widget_show (arrow);
|
||||
|
||||
|
|
@ -56,17 +56,17 @@ int main( int argc,
|
|||
|
||||
button = create_arrow_button (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
|
||||
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 3);
|
||||
|
||||
|
||||
button = create_arrow_button (GTK_ARROW_LEFT, GTK_SHADOW_ETCHED_IN);
|
||||
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 3);
|
||||
|
||||
|
||||
button = create_arrow_button (GTK_ARROW_RIGHT, GTK_SHADOW_ETCHED_OUT);
|
||||
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 3);
|
||||
|
||||
|
||||
gtk_widget_show (window);
|
||||
|
||||
|
||||
/* Rest in gtk_main and wait for the fun to begin! */
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
|
||||
int main( int argc,
|
||||
char *argv[] )
|
||||
{
|
||||
|
|
@ -8,34 +8,34 @@ int main( int argc,
|
|||
GtkWidget *aspect_frame;
|
||||
GtkWidget *drawing_area;
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Aspect Frame");
|
||||
g_signal_connect (G_OBJECT (window), "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
|
||||
/* Create an aspect_frame and add it to our toplevel window */
|
||||
|
||||
|
||||
aspect_frame = gtk_aspect_frame_new ("2x1", /* label */
|
||||
0.5, /* center x */
|
||||
0.5, /* center y */
|
||||
2, /* xsize/ysize = 2 */
|
||||
FALSE /* ignore child's aspect */);
|
||||
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), aspect_frame);
|
||||
gtk_widget_show (aspect_frame);
|
||||
|
||||
|
||||
/* Now add a child widget to the aspect frame */
|
||||
|
||||
|
||||
drawing_area = gtk_drawing_area_new ();
|
||||
|
||||
|
||||
/* Ask for a 200x200 window, but the AspectFrame will give us a 200x100
|
||||
* window since we are forcing a 2x1 aspect ratio */
|
||||
gtk_widget_set_size_request (drawing_area, 200, 200);
|
||||
gtk_container_add (GTK_CONTAINER (aspect_frame), drawing_area);
|
||||
gtk_widget_show (drawing_area);
|
||||
|
||||
|
||||
gtk_widget_show (window);
|
||||
gtk_main ();
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@ int main( int argc,
|
|||
char *argv[] )
|
||||
{
|
||||
GtkWidget *window;
|
||||
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_widget_show (window);
|
||||
|
||||
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,6 +115,6 @@ int main( int argc,
|
|||
|
||||
/* Enter the event loop */
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
void button_add_clicked( gpointer data )
|
||||
{
|
||||
int indx;
|
||||
|
||||
|
||||
/* Something silly to add to the list. 4 rows of 2 columns each */
|
||||
gchar *drink[4][2] = { { "Milk", "3 Oz" },
|
||||
{ "Water", "6 l" },
|
||||
|
|
@ -80,15 +80,15 @@ void selection_made( GtkWidget *clist,
|
|||
|
||||
int main( int argc,
|
||||
gchar *argv[] )
|
||||
{
|
||||
{
|
||||
GtkWidget *window;
|
||||
GtkWidget *vbox, *hbox;
|
||||
GtkWidget *scrolled_window, *clist;
|
||||
GtkWidget *button_add, *button_clear, *button_hide_show;
|
||||
GtkWidget *button_add, *button_clear, *button_hide_show;
|
||||
gchar *titles[2] = { "Ingredients", "Amount" };
|
||||
|
||||
gtk_init(&argc, &argv);
|
||||
|
||||
|
||||
window=gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_widget_set_size_request (GTK_WIDGET (window), 300, 150);
|
||||
|
||||
|
|
@ -96,12 +96,12 @@ int main( int argc,
|
|||
g_signal_connect (G_OBJECT (window), "destroy",
|
||||
G_CALLBACK (gtk_main_quit),
|
||||
NULL);
|
||||
|
||||
|
||||
vbox=gtk_vbox_new (FALSE, 5);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
|
||||
/* Create a scrolled window to pack the CList widget into */
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
|
|
@ -168,6 +168,6 @@ int main( int argc,
|
|||
gtk_widget_show (window);
|
||||
|
||||
gtk_main();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ static void color_changed_cb( GtkWidget *widget,
|
|||
GdkColor ncolor;
|
||||
|
||||
gtk_color_selection_get_current_color (colorsel, &ncolor);
|
||||
gtk_widget_modify_bg (drawingarea, GTK_STATE_NORMAL, &ncolor);
|
||||
gtk_widget_modify_bg (drawingarea, GTK_STATE_NORMAL, &ncolor);
|
||||
}
|
||||
|
||||
/* Drawingarea event handler */
|
||||
|
|
@ -56,7 +56,7 @@ static gboolean area_event( GtkWidget *widget,
|
|||
|
||||
if (response == GTK_RESPONSE_OK)
|
||||
gtk_color_selection_get_current_color (colorsel, &color);
|
||||
else
|
||||
else
|
||||
gtk_widget_modify_bg (drawingarea, GTK_STATE_NORMAL, &color);
|
||||
|
||||
gtk_widget_hide (colorseldlg);
|
||||
|
|
@ -96,7 +96,7 @@ gint main( gint argc,
|
|||
|
||||
g_signal_connect (GTK_OBJECT (window), "delete_event",
|
||||
GTK_SIGNAL_FUNC (destroy_window), (gpointer) window);
|
||||
|
||||
|
||||
/* Create drawingarea, set size and catch button events */
|
||||
|
||||
drawingarea = gtk_drawing_area_new ();
|
||||
|
|
@ -104,22 +104,22 @@ gint main( gint argc,
|
|||
color.red = 0;
|
||||
color.blue = 65535;
|
||||
color.green = 0;
|
||||
gtk_widget_modify_bg (drawingarea, GTK_STATE_NORMAL, &color);
|
||||
gtk_widget_modify_bg (drawingarea, GTK_STATE_NORMAL, &color);
|
||||
|
||||
gtk_widget_set_size_request (GTK_WIDGET (drawingarea), 200, 200);
|
||||
|
||||
gtk_widget_set_events (drawingarea, GDK_BUTTON_PRESS_MASK);
|
||||
|
||||
g_signal_connect (GTK_OBJECT (drawingarea), "event",
|
||||
g_signal_connect (GTK_OBJECT (drawingarea), "event",
|
||||
GTK_SIGNAL_FUNC (area_event), (gpointer) drawingarea);
|
||||
|
||||
|
||||
/* Add drawingarea to window, then show them both */
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), drawingarea);
|
||||
|
||||
gtk_widget_show (drawingarea);
|
||||
gtk_widget_show (window);
|
||||
|
||||
|
||||
/* Enter the gtk main loop (this never returns) */
|
||||
|
||||
gtk_main ();
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ else
|
|||
else
|
||||
if [ -x /usr/bin/awk ]; then
|
||||
awk -f extract.awk $TUTORIAL $1 $2 $3 $4 $5
|
||||
else
|
||||
else
|
||||
if [ -x /bin/awk ]; then
|
||||
awk -f extract.awk $TUTORIAL $1 $2 $3 $4 $5
|
||||
else
|
||||
|
|
|
|||
|
|
@ -12,28 +12,28 @@ int main( int argc,
|
|||
char *argv[] )
|
||||
{
|
||||
GtkWidget *filew;
|
||||
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
/* Create a new file selection widget */
|
||||
filew = gtk_file_selection_new ("File selection");
|
||||
|
||||
|
||||
g_signal_connect (G_OBJECT (filew), "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
/* Connect the ok_button to file_ok_sel function */
|
||||
g_signal_connect (G_OBJECT (GTK_FILE_SELECTION (filew)->ok_button),
|
||||
"clicked", G_CALLBACK (file_ok_sel), (gpointer) filew);
|
||||
|
||||
|
||||
/* Connect the cancel_button to destroy the widget */
|
||||
g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button),
|
||||
"clicked", G_CALLBACK (gtk_widget_destroy),
|
||||
G_OBJECT (filew));
|
||||
|
||||
|
||||
/* Lets set the filename, as if this were a save dialog, and we are giving
|
||||
a default filename */
|
||||
gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew),
|
||||
gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew),
|
||||
"penguin.png");
|
||||
|
||||
|
||||
gtk_widget_show (filew);
|
||||
gtk_main ();
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ static void move_button( GtkWidget *widget,
|
|||
{
|
||||
x = (x + 30) % 300;
|
||||
y = (y + 50) % 300;
|
||||
gtk_fixed_move (GTK_FIXED (fixed), widget, x, y);
|
||||
gtk_fixed_move (GTK_FIXED (fixed), widget, x, y);
|
||||
}
|
||||
|
||||
int main( int argc,
|
||||
|
|
@ -28,15 +28,15 @@ int main( int argc,
|
|||
|
||||
/* Initialise GTK */
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
/* Create a new window */
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Fixed Container");
|
||||
|
||||
/* Here we connect the "destroy" event to a signal handler */
|
||||
/* Here we connect the "destroy" event to a signal handler */
|
||||
g_signal_connect (G_OBJECT (window), "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
||||
|
||||
/* Sets the border width of the window. */
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
|
|
@ -44,29 +44,29 @@ int main( int argc,
|
|||
fixed = gtk_fixed_new ();
|
||||
gtk_container_add (GTK_CONTAINER (window), fixed);
|
||||
gtk_widget_show (fixed);
|
||||
|
||||
|
||||
for (i = 1 ; i <= 3 ; i++) {
|
||||
/* Creates a new button with the label "Press me" */
|
||||
button = gtk_button_new_with_label ("Press me");
|
||||
|
||||
|
||||
/* When the button receives the "clicked" signal, it will call the
|
||||
* function move_button() passing it the Fixed Container as its
|
||||
* argument. */
|
||||
g_signal_connect (G_OBJECT (button), "clicked",
|
||||
G_CALLBACK (move_button), (gpointer) fixed);
|
||||
|
||||
|
||||
/* This packs the button into the fixed containers window. */
|
||||
gtk_fixed_put (GTK_FIXED (fixed), button, i*50, i*50);
|
||||
|
||||
|
||||
/* The final step is to display this newly created widget. */
|
||||
gtk_widget_show (button);
|
||||
}
|
||||
|
||||
/* Display the window */
|
||||
gtk_widget_show (window);
|
||||
|
||||
|
||||
/* Enter the event loop */
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,12 +10,12 @@ int main( int argc,
|
|||
|
||||
/* Initialise GTK */
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
/* Create a new window */
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Frame Example");
|
||||
|
||||
/* Here we connect the "destroy" event to a signal handler */
|
||||
/* Here we connect the "destroy" event to a signal handler */
|
||||
g_signal_connect (G_OBJECT (window), "destroy",
|
||||
G_CALLBACK (gtk_main_quit), NULL);
|
||||
|
||||
|
|
@ -37,12 +37,12 @@ int main( int argc,
|
|||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT);
|
||||
|
||||
gtk_widget_show (frame);
|
||||
|
||||
|
||||
/* Display the window */
|
||||
gtk_widget_show (window);
|
||||
|
||||
|
||||
/* Enter the event loop */
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -223,8 +223,8 @@ gtk_dial_realize (GtkWidget *widget)
|
|||
attributes.height = widget->allocation.height;
|
||||
attributes.wclass = GDK_INPUT_OUTPUT;
|
||||
attributes.window_type = GDK_WINDOW_CHILD;
|
||||
attributes.event_mask = gtk_widget_get_events (widget) |
|
||||
GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK |
|
||||
attributes.event_mask = gtk_widget_get_events (widget) |
|
||||
GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK |
|
||||
GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK |
|
||||
GDK_POINTER_MOTION_HINT_MASK;
|
||||
attributes.visual = gtk_widget_get_visual (widget);
|
||||
|
|
@ -240,7 +240,7 @@ gtk_dial_realize (GtkWidget *widget)
|
|||
gtk_style_set_background (widget->style, widget->window, GTK_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
gtk_dial_size_request (GtkWidget *widget,
|
||||
GtkRequisition *requisition)
|
||||
{
|
||||
|
|
@ -293,7 +293,7 @@ gtk_dial_expose( GtkWidget *widget,
|
|||
|
||||
if (event->count > 0)
|
||||
return FALSE;
|
||||
|
||||
|
||||
dial = GTK_DIAL (widget);
|
||||
|
||||
/* gdk_window_clear_area (widget->window,
|
||||
|
|
@ -367,7 +367,7 @@ gtk_dial_expose( GtkWidget *widget,
|
|||
theta = ((gfloat)i*M_PI / (18*inc/24.) - M_PI/6.);
|
||||
|
||||
if ((theta - last) < (increment))
|
||||
continue;
|
||||
continue;
|
||||
last = theta;
|
||||
|
||||
s = sin (theta);
|
||||
|
|
@ -430,20 +430,20 @@ gtk_dial_button_press( GtkWidget *widget,
|
|||
|
||||
dial = GTK_DIAL (widget);
|
||||
|
||||
/* Determine if button press was within pointer region - we
|
||||
/* Determine if button press was within pointer region - we
|
||||
do this by computing the parallel and perpendicular distance of
|
||||
the point where the mouse was pressed from the line passing through
|
||||
the pointer */
|
||||
|
||||
|
||||
dx = event->x - widget->allocation.width / 2;
|
||||
dy = widget->allocation.height / 2 - event->y;
|
||||
|
||||
|
||||
s = sin (dial->angle);
|
||||
c = cos (dial->angle);
|
||||
|
||||
|
||||
d_parallel = s*dy + c*dx;
|
||||
d_perpendicular = fabs (s*dx - c*dy);
|
||||
|
||||
|
||||
if (!dial->button &&
|
||||
(d_perpendicular < dial->pointer_width/2) &&
|
||||
(d_parallel > - dial->pointer_width))
|
||||
|
|
@ -478,7 +478,7 @@ gtk_dial_button_release( GtkWidget *widget,
|
|||
|
||||
if (dial->policy == GTK_UPDATE_DELAYED)
|
||||
g_source_remove (dial->timer);
|
||||
|
||||
|
||||
if ((dial->policy != GTK_UPDATE_CONTINUOUS) &&
|
||||
(dial->old_value != dial->adjustment->value))
|
||||
g_signal_emit_by_name (GTK_OBJECT (dial->adjustment), "value_changed");
|
||||
|
|
@ -598,12 +598,12 @@ static void
|
|||
gtk_dial_update (GtkDial *dial)
|
||||
{
|
||||
gfloat new_value;
|
||||
|
||||
|
||||
g_return_if_fail (dial != NULL);
|
||||
g_return_if_fail (GTK_IS_DIAL (dial));
|
||||
|
||||
new_value = dial->adjustment->value;
|
||||
|
||||
|
||||
if (new_value < dial->adjustment->lower)
|
||||
new_value = dial->adjustment->lower;
|
||||
|
||||
|
|
|
|||
|
|
@ -24,25 +24,25 @@ int main( int argc,
|
|||
gtk_container_add (GTK_CONTAINER (window), hbox);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 5);
|
||||
|
||||
|
||||
frame = gtk_frame_new ("Normal Label");
|
||||
label = gtk_label_new ("This is a Normal label");
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new ("Multi-line Label");
|
||||
label = gtk_label_new ("This is a Multi-line label.\nSecond line\n" \
|
||||
"Third line");
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new ("Left Justified Label");
|
||||
label = gtk_label_new ("This is a Left-Justified\n" \
|
||||
"Multi-line label.\nThird line");
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new ("Right Justified Label");
|
||||
label = gtk_label_new ("This is a Right-Justified\nMulti-line label.\n" \
|
||||
"Fourth line, (j/k)");
|
||||
|
|
@ -66,7 +66,7 @@ int main( int argc,
|
|||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new ("Filled, wrapped label");
|
||||
label = gtk_label_new ("This is an example of a line-wrapped, filled label. " \
|
||||
"It should be taking "\
|
||||
|
|
@ -82,7 +82,7 @@ int main( int argc,
|
|||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
frame = gtk_frame_new ("Underlined label");
|
||||
label = gtk_label_new ("This label is underlined!\n"
|
||||
"This one is underlined in quite a funky fashion");
|
||||
|
|
@ -91,10 +91,10 @@ int main( int argc,
|
|||
"_________________________ _ _________ _ ______ __ _______ ___");
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,15 +79,15 @@ static gboolean popup_cb( GtkWidget *widget,
|
|||
GtkWidget *menu )
|
||||
{
|
||||
GdkEventButton *bevent = (GdkEventButton *)event;
|
||||
|
||||
|
||||
/* Only take button presses */
|
||||
if (event->type != GDK_BUTTON_PRESS)
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* Show the menu */
|
||||
gtk_menu_popup (GTK_MENU(menu), NULL, NULL,
|
||||
NULL, NULL, bevent->button, bevent->time);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -97,13 +97,13 @@ GtkWidget *get_popup_menu( void )
|
|||
{
|
||||
GtkItemFactory *item_factory;
|
||||
GtkWidget *button, *menu;
|
||||
|
||||
|
||||
/* Same as before but don't bother with the accelerators */
|
||||
item_factory = gtk_item_factory_new (GTK_TYPE_MENU, "<main>",
|
||||
NULL);
|
||||
gtk_item_factory_create_items (item_factory, nmenu_items, menu_items, NULL);
|
||||
menu = gtk_item_factory_get_widget (item_factory, "<main>");
|
||||
|
||||
|
||||
/* Make a button to activate the popup menu */
|
||||
button = gtk_button_new_with_label ("Popup");
|
||||
/* Make the menu popup when clicked */
|
||||
|
|
@ -120,7 +120,7 @@ GtkWidget *get_option_menu( void )
|
|||
{
|
||||
GtkItemFactory *item_factory;
|
||||
GtkWidget *option_menu;
|
||||
|
||||
|
||||
/* Same again, not bothering with the accelerators */
|
||||
item_factory = gtk_item_factory_new (GTK_TYPE_OPTION_MENU, "<main>",
|
||||
NULL);
|
||||
|
|
@ -137,10 +137,10 @@ int main( int argc,
|
|||
GtkWidget *window;
|
||||
GtkWidget *main_vbox;
|
||||
GtkWidget *menubar, *option_menu, *popup_button;
|
||||
|
||||
|
||||
/* Initialize GTK */
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
/* Make a window */
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
g_signal_connect (G_OBJECT (window), "destroy",
|
||||
|
|
@ -148,19 +148,19 @@ int main( int argc,
|
|||
NULL);
|
||||
gtk_window_set_title (GTK_WINDOW(window), "Item Factory");
|
||||
gtk_widget_set_size_request (GTK_WIDGET(window), 300, 200);
|
||||
|
||||
|
||||
/* Make a vbox to put the three menus in */
|
||||
main_vbox = gtk_vbox_new (FALSE, 1);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 1);
|
||||
gtk_container_add (GTK_CONTAINER (window), main_vbox);
|
||||
|
||||
|
||||
/* Get the three types of menu */
|
||||
/* Note: all three menus are separately created, so they are not the
|
||||
same menu */
|
||||
menubar = get_menubar_menu (window);
|
||||
popup_button = get_popup_menu ();
|
||||
option_menu = get_option_menu ();
|
||||
|
||||
|
||||
/* Pack it all together */
|
||||
gtk_box_pack_start (GTK_BOX (main_vbox), menubar, FALSE, TRUE, 0);
|
||||
gtk_box_pack_end (GTK_BOX (main_vbox), popup_button, FALSE, TRUE, 0);
|
||||
|
|
@ -168,9 +168,9 @@ int main( int argc,
|
|||
|
||||
/* Show the widgets */
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
|
||||
/* Finished! */
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
|
||||
/* Create the list of "messages" */
|
||||
static GtkWidget *create_list( void )
|
||||
{
|
||||
|
|
@ -14,44 +14,44 @@ static GtkWidget *create_list( void )
|
|||
GtkTreeViewColumn *column;
|
||||
|
||||
int i;
|
||||
|
||||
|
||||
/* Create a new scrolled window, with scrollbars only if needed */
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_AUTOMATIC);
|
||||
|
||||
|
||||
model = gtk_list_store_new (1, G_TYPE_STRING);
|
||||
tree_view = gtk_tree_view_new ();
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
tree_view);
|
||||
gtk_tree_view_set_model (GTK_TREE_VIEW (tree_view), GTK_TREE_MODEL (model));
|
||||
gtk_widget_show (tree_view);
|
||||
|
||||
|
||||
/* Add some messages to the window */
|
||||
for (i = 0; i < 10; i++) {
|
||||
gchar *msg = g_strdup_printf ("Message #%d", i);
|
||||
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
|
||||
gtk_list_store_set (GTK_LIST_STORE (model),
|
||||
gtk_list_store_set (GTK_LIST_STORE (model),
|
||||
&iter,
|
||||
0, msg,
|
||||
-1);
|
||||
g_free (msg);
|
||||
}
|
||||
|
||||
|
||||
cell = gtk_cell_renderer_text_new ();
|
||||
|
||||
column = gtk_tree_view_column_new_with_attributes ("Messages",
|
||||
cell,
|
||||
"text", 0,
|
||||
NULL);
|
||||
|
||||
|
||||
gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view),
|
||||
GTK_TREE_VIEW_COLUMN (column));
|
||||
|
||||
return scrolled_window;
|
||||
}
|
||||
|
||||
|
||||
/* Add some text to our text widget - this is a callback that is invoked
|
||||
when our window is realized. We could also force our window to be
|
||||
realized with gtk_widget_realize, but it would have to be part of
|
||||
|
|
@ -60,10 +60,10 @@ a hierarchy first */
|
|||
static void insert_text( GtkTextBuffer *buffer )
|
||||
{
|
||||
GtkTextIter iter;
|
||||
|
||||
|
||||
gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
|
||||
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
gtk_text_buffer_insert (buffer, &iter,
|
||||
"From: pathfinder@nasa.gov\n"
|
||||
"To: mom@nasa.gov\n"
|
||||
"Subject: Made it!\n"
|
||||
|
|
@ -73,7 +73,7 @@ static void insert_text( GtkTextBuffer *buffer )
|
|||
"Sojourner says hi. See you soon.\n"
|
||||
" -Path\n", -1);
|
||||
}
|
||||
|
||||
|
||||
/* Create a scrolled text area that displays a "message" */
|
||||
static GtkWidget *create_text( void )
|
||||
{
|
||||
|
|
@ -96,7 +96,7 @@ static GtkWidget *create_text( void )
|
|||
|
||||
return scrolled_window;
|
||||
}
|
||||
|
||||
|
||||
int main( int argc,
|
||||
char *argv[] )
|
||||
{
|
||||
|
|
@ -106,7 +106,7 @@ int main( int argc,
|
|||
GtkWidget *text;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Paned Windows");
|
||||
g_signal_connect (G_OBJECT (window), "destroy",
|
||||
|
|
@ -115,17 +115,17 @@ int main( int argc,
|
|||
gtk_widget_set_size_request (GTK_WIDGET (window), 450, 400);
|
||||
|
||||
/* create a vpaned widget and add it to our toplevel window */
|
||||
|
||||
|
||||
vpaned = gtk_vpaned_new ();
|
||||
gtk_container_add (GTK_CONTAINER (window), vpaned);
|
||||
gtk_widget_show (vpaned);
|
||||
|
||||
|
||||
/* Now create the contents of the two halves of the window */
|
||||
|
||||
|
||||
list = create_list ();
|
||||
gtk_paned_add1 (GTK_PANED (vpaned), list);
|
||||
gtk_widget_show (list);
|
||||
|
||||
|
||||
text = create_text ();
|
||||
gtk_paned_add2 (GTK_PANED (vpaned), text);
|
||||
gtk_widget_show (text);
|
||||
|
|
|
|||
|
|
@ -14,38 +14,38 @@ static gboolean progress_timeout( gpointer data )
|
|||
{
|
||||
ProgressData *pdata = (ProgressData *)data;
|
||||
gdouble new_val;
|
||||
|
||||
if (pdata->activity_mode)
|
||||
|
||||
if (pdata->activity_mode)
|
||||
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (pdata->pbar));
|
||||
else
|
||||
else
|
||||
{
|
||||
/* Calculate the value of the progress bar using the
|
||||
* value range set in the adjustment object */
|
||||
|
||||
|
||||
new_val = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (pdata->pbar)) + 0.01;
|
||||
|
||||
|
||||
if (new_val > 1.0)
|
||||
new_val = 0.0;
|
||||
|
||||
|
||||
/* Set the new value */
|
||||
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pdata->pbar), new_val);
|
||||
}
|
||||
|
||||
|
||||
/* As this is a timeout function, return TRUE so that it
|
||||
* continues to get called */
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Callback that toggles the text display within the progress bar trough */
|
||||
static void toggle_show_text( GtkWidget *widget,
|
||||
ProgressData *pdata )
|
||||
{
|
||||
const gchar *text;
|
||||
|
||||
|
||||
text = gtk_progress_bar_get_text (GTK_PROGRESS_BAR (pdata->pbar));
|
||||
if (text && *text)
|
||||
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), "");
|
||||
else
|
||||
else
|
||||
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (pdata->pbar), "some text");
|
||||
}
|
||||
|
||||
|
|
@ -54,24 +54,24 @@ static void toggle_activity_mode( GtkWidget *widget,
|
|||
ProgressData *pdata )
|
||||
{
|
||||
pdata->activity_mode = !pdata->activity_mode;
|
||||
if (pdata->activity_mode)
|
||||
if (pdata->activity_mode)
|
||||
gtk_progress_bar_pulse (GTK_PROGRESS_BAR (pdata->pbar));
|
||||
else
|
||||
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (pdata->pbar), 0.0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Callback that toggles the orientation of the progress bar */
|
||||
static void toggle_orientation( GtkWidget *widget,
|
||||
ProgressData *pdata )
|
||||
{
|
||||
switch (gtk_progress_bar_get_orientation (GTK_PROGRESS_BAR (pdata->pbar))) {
|
||||
case GTK_PROGRESS_LEFT_TO_RIGHT:
|
||||
gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (pdata->pbar),
|
||||
gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (pdata->pbar),
|
||||
GTK_PROGRESS_RIGHT_TO_LEFT);
|
||||
break;
|
||||
case GTK_PROGRESS_RIGHT_TO_LEFT:
|
||||
gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (pdata->pbar),
|
||||
gtk_progress_bar_set_orientation (GTK_PROGRESS_BAR (pdata->pbar),
|
||||
GTK_PROGRESS_LEFT_TO_RIGHT);
|
||||
break;
|
||||
default:;
|
||||
|
|
@ -79,7 +79,7 @@ static void toggle_orientation( GtkWidget *widget,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Clean up allocated memory and remove the timer */
|
||||
static void destroy_progress( GtkWidget *widget,
|
||||
ProgressData *pdata)
|
||||
|
|
@ -106,7 +106,7 @@ int main( int argc,
|
|||
|
||||
/* Allocate memory for the data that is passed to the callbacks */
|
||||
pdata = g_malloc (sizeof (ProgressData));
|
||||
|
||||
|
||||
pdata->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_resizable (GTK_WINDOW (pdata->window), TRUE);
|
||||
|
||||
|
|
@ -120,7 +120,7 @@ int main( int argc,
|
|||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
|
||||
gtk_container_add (GTK_CONTAINER (pdata->window), vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
|
||||
/* Create a centering alignment object */
|
||||
align = gtk_alignment_new (0.5, 0.5, 0, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 5);
|
||||
|
|
@ -193,6 +193,6 @@ int main( int argc,
|
|||
gtk_widget_show (pdata->window);
|
||||
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ static void draw_brush( GtkWidget *widget,
|
|||
TRUE,
|
||||
update_rect.x, update_rect.y,
|
||||
update_rect.width, update_rect.height);
|
||||
gtk_widget_queue_draw_area (widget,
|
||||
gtk_widget_queue_draw_area (widget,
|
||||
update_rect.x, update_rect.y,
|
||||
update_rect.width, update_rect.height);
|
||||
}
|
||||
|
|
@ -103,10 +103,10 @@ static gboolean motion_notify_event( GtkWidget *widget,
|
|||
y = event->y;
|
||||
state = event->state;
|
||||
}
|
||||
|
||||
|
||||
if (state & GDK_BUTTON1_MASK && pixmap != NULL)
|
||||
draw_brush (widget, x, y);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -115,7 +115,7 @@ void quit ()
|
|||
exit (0);
|
||||
}
|
||||
|
||||
int main( int argc,
|
||||
int main( int argc,
|
||||
char *argv[] )
|
||||
{
|
||||
GtkWidget *window;
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ draw_brush (GtkWidget *widget, GdkInputSource source,
|
|||
gdk_draw_rectangle (pixmap, gc, TRUE,
|
||||
update_rect.x, update_rect.y,
|
||||
update_rect.width, update_rect.height);
|
||||
gtk_widget_queue_draw_area (widget,
|
||||
gtk_widget_queue_draw_area (widget,
|
||||
update_rect.x, update_rect.y,
|
||||
update_rect.width, update_rect.height);
|
||||
}
|
||||
|
|
@ -104,7 +104,7 @@ static gboolean
|
|||
button_press_event (GtkWidget *widget, GdkEventButton *event)
|
||||
{
|
||||
print_button_press (event->device);
|
||||
|
||||
|
||||
if (event->button == 1 && pixmap != NULL) {
|
||||
gdouble pressure;
|
||||
gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure);
|
||||
|
|
@ -121,7 +121,7 @@ motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
|
|||
gdouble pressure;
|
||||
GdkModifierType state;
|
||||
|
||||
if (event->is_hint)
|
||||
if (event->is_hint)
|
||||
{
|
||||
gdk_device_get_state (event->device, event->window, NULL, &state);
|
||||
gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_X, &x);
|
||||
|
|
@ -135,10 +135,10 @@ motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
|
|||
gdk_event_get_axis ((GdkEvent *)event, GDK_AXIS_PRESSURE, &pressure);
|
||||
state = event->state;
|
||||
}
|
||||
|
||||
|
||||
if (state & GDK_BUTTON1_MASK && pixmap != NULL)
|
||||
draw_brush (widget, event->device->source, x, y, pressure);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ int main( int argc,
|
|||
GtkWidget *button;
|
||||
char buffer[32];
|
||||
int i, j;
|
||||
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
/* Create a new dialog window for the scrolled window to be
|
||||
* packed into. */
|
||||
window = gtk_dialog_new ();
|
||||
|
|
@ -28,36 +28,36 @@ int main( int argc,
|
|||
gtk_window_set_title (GTK_WINDOW (window), "GtkScrolledWindow example");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
||||
gtk_widget_set_size_request (window, 300, 300);
|
||||
|
||||
|
||||
/* create a new scrolled window. */
|
||||
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
|
||||
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);
|
||||
|
||||
|
||||
/* the policy is one of GTK_POLICY AUTOMATIC, or GTK_POLICY_ALWAYS.
|
||||
* GTK_POLICY_AUTOMATIC will automatically decide whether you need
|
||||
* scrollbars, whereas GTK_POLICY_ALWAYS will always leave the scrollbars
|
||||
* there. The first one is the horizontal scrollbar, the second,
|
||||
* there. The first one is the horizontal scrollbar, the second,
|
||||
* the vertical. */
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
|
||||
GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
|
||||
/* The dialog window is created with a vbox packed into it. */
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG(window)->vbox), scrolled_window,
|
||||
/* The dialog window is created with a vbox packed into it. */
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG(window)->vbox), scrolled_window,
|
||||
TRUE, TRUE, 0);
|
||||
gtk_widget_show (scrolled_window);
|
||||
|
||||
|
||||
/* create a table of 10 by 10 squares. */
|
||||
table = gtk_table_new (10, 10, FALSE);
|
||||
|
||||
|
||||
/* set the spacing to 10 on x and 10 on y */
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 10);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 10);
|
||||
|
||||
|
||||
/* pack the table into the scrolled window */
|
||||
gtk_scrolled_window_add_with_viewport (
|
||||
GTK_SCROLLED_WINDOW (scrolled_window), table);
|
||||
gtk_widget_show (table);
|
||||
|
||||
|
||||
/* this simply creates a grid of toggle buttons on the table
|
||||
* to demonstrate the scrolled window. */
|
||||
for (i = 0; i < 10; i++)
|
||||
|
|
@ -68,26 +68,26 @@ int main( int argc,
|
|||
i, i+1, j, j+1);
|
||||
gtk_widget_show (button);
|
||||
}
|
||||
|
||||
|
||||
/* Add a "close" button to the bottom of the dialog */
|
||||
button = gtk_button_new_with_label ("close");
|
||||
g_signal_connect_swapped (G_OBJECT (button), "clicked",
|
||||
G_CALLBACK (gtk_widget_destroy),
|
||||
G_OBJECT (window));
|
||||
|
||||
|
||||
/* this makes it so the button is the default. */
|
||||
|
||||
|
||||
gtk_widget_set_can_default (button, TRUE);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area), button, TRUE, TRUE, 0);
|
||||
|
||||
|
||||
/* This grabs this button to be the default button. Simply hitting
|
||||
* the "Enter" key will cause this button to activate. */
|
||||
gtk_widget_grab_default (button);
|
||||
gtk_widget_show (button);
|
||||
|
||||
|
||||
gtk_widget_show (window);
|
||||
|
||||
|
||||
gtk_main();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,34 +44,34 @@ int main( int argc,
|
|||
FILE *infile;
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_widget_set_size_request (window, 600, 500);
|
||||
gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE);
|
||||
gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE);
|
||||
g_signal_connect (G_OBJECT (window), "destroy",
|
||||
G_CALLBACK (close_application),
|
||||
NULL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Text Widget Example");
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 0);
|
||||
|
||||
|
||||
|
||||
|
||||
box1 = gtk_vbox_new (FALSE, 0);
|
||||
gtk_container_add (GTK_CONTAINER (window), box1);
|
||||
gtk_widget_show (box1);
|
||||
|
||||
|
||||
|
||||
|
||||
box2 = gtk_vbox_new (FALSE, 10);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
|
||||
gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
|
||||
gtk_widget_show (box2);
|
||||
|
||||
|
||||
|
||||
|
||||
table = gtk_table_new (2, 2, FALSE);
|
||||
gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2);
|
||||
gtk_table_set_col_spacing (GTK_TABLE (table), 0, 2);
|
||||
gtk_box_pack_start (GTK_BOX (box2), table, TRUE, TRUE, 0);
|
||||
gtk_widget_show (table);
|
||||
|
||||
|
||||
/* Create the GtkText widget */
|
||||
text = gtk_text_new (NULL, NULL);
|
||||
gtk_text_set_editable (GTK_TEXT (text), TRUE);
|
||||
|
|
@ -104,7 +104,7 @@ int main( int argc,
|
|||
|
||||
/* Freeze the text widget, ready for multiple updates */
|
||||
gtk_text_freeze (GTK_TEXT (text));
|
||||
|
||||
|
||||
/* Insert some colored text */
|
||||
gtk_text_insert (GTK_TEXT (text), NULL, &text->style->black, NULL,
|
||||
"Supports ", -1);
|
||||
|
|
@ -114,31 +114,31 @@ int main( int argc,
|
|||
"text and different ", -1);
|
||||
gtk_text_insert (GTK_TEXT (text), fixed_font, &text->style->black, NULL,
|
||||
"fonts\n\n", -1);
|
||||
|
||||
|
||||
/* Load the file text.c into the text window */
|
||||
|
||||
infile = fopen ("text.c", "r");
|
||||
|
||||
|
||||
if (infile) {
|
||||
char buffer[1024];
|
||||
int nchars;
|
||||
|
||||
|
||||
while (1)
|
||||
{
|
||||
nchars = fread (buffer, 1, 1024, infile);
|
||||
gtk_text_insert (GTK_TEXT (text), fixed_font, NULL,
|
||||
NULL, buffer, nchars);
|
||||
|
||||
|
||||
if (nchars < 1024)
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
fclose (infile);
|
||||
}
|
||||
|
||||
/* Thaw the text widget, allowing the updates to become visible */
|
||||
/* Thaw the text widget, allowing the updates to become visible */
|
||||
gtk_text_thaw (GTK_TEXT (text));
|
||||
|
||||
|
||||
hbox = gtk_hbutton_box_new ();
|
||||
gtk_box_pack_start (GTK_BOX (box2), hbox, FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbox);
|
||||
|
|
@ -164,7 +164,7 @@ int main( int argc,
|
|||
gtk_container_set_border_width (GTK_CONTAINER (box2), 10);
|
||||
gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
|
||||
gtk_widget_show (box2);
|
||||
|
||||
|
||||
button = gtk_button_new_with_label ("close");
|
||||
g_signal_connect (G_OBJECT (button), "clicked",
|
||||
G_CALLBACK (close_application),
|
||||
|
|
@ -177,6 +177,6 @@ int main( int argc,
|
|||
gtk_widget_show (window);
|
||||
|
||||
gtk_main ();
|
||||
|
||||
return 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,13 +62,13 @@ tictactoe_get_type (void)
|
|||
static void
|
||||
tictactoe_class_init (TictactoeClass *klass)
|
||||
{
|
||||
|
||||
|
||||
tictactoe_signals[TICTACTOE_SIGNAL] = g_signal_new ("tictactoe",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
|
||||
G_STRUCT_OFFSET (TictactoeClass, tictactoe),
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
|
|
@ -79,14 +79,14 @@ static void
|
|||
tictactoe_init (Tictactoe *ttt)
|
||||
{
|
||||
gint i,j;
|
||||
|
||||
|
||||
gtk_table_resize (GTK_TABLE (ttt), 3, 3);
|
||||
gtk_table_set_homogeneous (GTK_TABLE (ttt), TRUE);
|
||||
|
||||
for (i=0;i<3; i++)
|
||||
for (j=0;j<3; j++) {
|
||||
ttt->buttons[i][j] = gtk_toggle_button_new ();
|
||||
gtk_table_attach_defaults (GTK_TABLE (ttt), ttt->buttons[i][j],
|
||||
gtk_table_attach_defaults (GTK_TABLE (ttt), ttt->buttons[i][j],
|
||||
i, i+1, j, j+1);
|
||||
g_signal_connect (G_OBJECT (ttt->buttons[i][j]), "toggled",
|
||||
G_CALLBACK (tictactoe_toggle), (gpointer) ttt);
|
||||
|
|
@ -101,7 +101,7 @@ tictactoe_new ()
|
|||
return GTK_WIDGET (g_object_new (tictactoe_get_type (), NULL));
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
tictactoe_clear (Tictactoe *ttt)
|
||||
{
|
||||
int i,j;
|
||||
|
|
@ -109,7 +109,7 @@ tictactoe_clear (Tictactoe *ttt)
|
|||
for (i = 0; i<3; i++)
|
||||
for (j = 0; j<3; j++)
|
||||
{
|
||||
g_signal_handlers_block_matched (G_OBJECT (ttt->buttons[i][j]),
|
||||
g_signal_handlers_block_matched (G_OBJECT (ttt->buttons[i][j]),
|
||||
G_SIGNAL_MATCH_DATA,
|
||||
0, 0, NULL, NULL, ttt);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (ttt->buttons[i][j]),
|
||||
|
|
@ -141,15 +141,15 @@ tictactoe_toggle (GtkWidget *widget, Tictactoe *ttt)
|
|||
|
||||
for (i = 0; i<3; i++)
|
||||
{
|
||||
success = success &&
|
||||
success = success &&
|
||||
GTK_TOGGLE_BUTTON (ttt->buttons[rwins[k][i]][cwins[k][i]])->active;
|
||||
found = found ||
|
||||
ttt->buttons[rwins[k][i]][cwins[k][i]] == widget;
|
||||
}
|
||||
|
||||
|
||||
if (success && found)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (ttt),
|
||||
g_signal_emit (G_OBJECT (ttt),
|
||||
tictactoe_signals[TICTACTOE_SIGNAL], 0);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ typedef struct _TictactoeClass TictactoeClass;
|
|||
struct _Tictactoe
|
||||
{
|
||||
GtkTable table;
|
||||
|
||||
|
||||
GtkWidget *buttons[3][3];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -15,20 +15,20 @@ int main( int argc,
|
|||
{
|
||||
GtkWidget *window;
|
||||
GtkWidget *ttt;
|
||||
|
||||
|
||||
gtk_init (&argc, &argv);
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
|
||||
|
||||
gtk_window_set_title (GTK_WINDOW (window), "Aspect Frame");
|
||||
|
||||
|
||||
g_signal_connect (G_OBJECT (window), "destroy",
|
||||
G_CALLBACK (exit), NULL);
|
||||
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
|
||||
|
||||
ttt = tictactoe_new ();
|
||||
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (window), ttt);
|
||||
gtk_widget_show (ttt);
|
||||
|
||||
|
|
@ -37,9 +37,9 @@ int main( int argc,
|
|||
G_CALLBACK (win), NULL);
|
||||
|
||||
gtk_widget_show (window);
|
||||
|
||||
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ static void cb_select_child (GtkWidget *root_tree, GtkWidget *child,
|
|||
static void cb_selection_changed( GtkWidget *tree )
|
||||
{
|
||||
GList *i;
|
||||
|
||||
|
||||
g_print ("selection_change called for tree %p\n", tree);
|
||||
g_print ("selected objects are:\n");
|
||||
|
||||
|
|
@ -85,7 +85,7 @@ int main( int argc,
|
|||
gtk_widget_set_size_request (scrolled_win, 150, 200);
|
||||
gtk_container_add (GTK_CONTAINER (window), scrolled_win);
|
||||
gtk_widget_show (scrolled_win);
|
||||
|
||||
|
||||
/* Create the root tree */
|
||||
tree = gtk_tree_new ();
|
||||
g_print ("root tree is %p\n", tree);
|
||||
|
|
@ -132,13 +132,13 @@ int main( int argc,
|
|||
subtree);
|
||||
|
||||
/* This is still necessary if you want these signals to be called
|
||||
for the subtree's children. Note that selection_change will be
|
||||
for the subtree's children. Note that selection_change will be
|
||||
signalled for the root tree regardless. */
|
||||
g_signal_connect (G_OBJECT (subtree), "select_child",
|
||||
G_CALLBACK (cb_select_child), subtree);
|
||||
g_signal_connect (G_OBJECT (subtree), "unselect_child",
|
||||
G_CALLBACK (cb_unselect_child), subtree);
|
||||
/* This has absolutely no effect, because it is completely ignored
|
||||
/* This has absolutely no effect, because it is completely ignored
|
||||
in subtrees */
|
||||
gtk_tree_set_selection_mode (GTK_TREE (subtree),
|
||||
GTK_SELECTION_SINGLE);
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ int main (int argc,
|
|||
GdkBitmap *mask;
|
||||
GtkStyle *style;
|
||||
GdkGC *gc;
|
||||
|
||||
|
||||
/* Create the main window, and attach delete_event signal to terminate
|
||||
* the application. Note that the main window will not have a titlebar
|
||||
* since we're making it a popup. */
|
||||
|
|
@ -165,10 +165,10 @@ int main (int argc,
|
|||
|
||||
/* This masks out everything except for the image itself */
|
||||
gtk_widget_shape_combine_mask (window, mask, 0, 0);
|
||||
|
||||
|
||||
/* show the window */
|
||||
gtk_widget_show (window);
|
||||
gtk_main ();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@ includedir=@includedir@
|
|||
Name: Gail
|
||||
Description: GNOME Accessibility Implementation Library
|
||||
Version: @VERSION@
|
||||
Requires: atk gtk+-2.0
|
||||
Requires: atk gtk+-2.0
|
||||
Libs: ${pc_top_builddir}/${pcfiledir}/modules/other/gail/libgail.la ${pc_top_builddir}/${pcfiledir}/modules/other/gail/libgail-util/libgailutil.la
|
||||
Cflags: -I${pc_top_builddir}/${pcfiledir}/modules/other/gail
|
||||
|
|
|
|||
|
|
@ -366,7 +366,7 @@ gdkenumtypes.c: @REBUILD@ $(gdk_public_h_sources) gdkenumtypes.c.template
|
|||
&& cp xgen-getc gdkenumtypes.c \
|
||||
&& rm -f xgen-getc
|
||||
|
||||
#
|
||||
#
|
||||
# Marshaller generation
|
||||
#
|
||||
gdkmarshalers.h: @REBUILD@ gdkmarshalers.list
|
||||
|
|
|
|||
|
|
@ -11,10 +11,10 @@ AM_CPPFLAGS = \
|
|||
-I$(top_builddir)/gdk \
|
||||
-DG_DISABLE_DEPRECATED \
|
||||
@GTK_DEBUG_FLAGS@ \
|
||||
@GDK_DEP_CFLAGS@
|
||||
@GDK_DEP_CFLAGS@
|
||||
|
||||
LDADDS = \
|
||||
@GDK_DEP_LIBS@
|
||||
@GDK_DEP_LIBS@
|
||||
|
||||
noinst_LTLIBRARIES = libgdk-directfb.la
|
||||
|
||||
|
|
@ -55,6 +55,6 @@ libgdkinclude_HEADERS = \
|
|||
gdkprivate-directfb.h
|
||||
|
||||
|
||||
EXTRA_DIST += AUTHORS README TODO
|
||||
EXTRA_DIST += AUTHORS README TODO
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
|
|
|||
|
|
@ -1201,14 +1201,14 @@ gdk_directfb_draw_pixbuf (GdkDrawable *drawable,
|
|||
GdkDrawableImplDirectFB *impl = GDK_DRAWABLE_IMPL_DIRECTFB (drawable);
|
||||
|
||||
g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
|
||||
|
||||
|
||||
pb_n_channels = gdk_pixbuf_get_n_channels (pixbuf);
|
||||
pb_bits_per_sample = gdk_pixbuf_get_bits_per_sample (pixbuf);
|
||||
|
||||
|
||||
g_return_if_fail (gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
|
||||
g_return_if_fail (pb_n_channels == 3 || pb_n_channels == 4);
|
||||
g_return_if_fail (pb_bits_per_sample == 8);
|
||||
|
||||
|
||||
g_return_if_fail (drawable != NULL);
|
||||
|
||||
pb_width = gdk_pixbuf_get_width (pixbuf);
|
||||
|
|
@ -1216,11 +1216,11 @@ gdk_directfb_draw_pixbuf (GdkDrawable *drawable,
|
|||
pb_pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
pb_rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
|
||||
if (width == -1)
|
||||
if (width == -1)
|
||||
width = pb_width;
|
||||
if (height == -1)
|
||||
height = pb_height;
|
||||
|
||||
|
||||
g_return_if_fail (width >= 0 && height >= 0);
|
||||
g_return_if_fail (src_x >= 0 && src_x + width <= pb_width);
|
||||
g_return_if_fail (src_y >= 0 && src_y + height <= pb_height);
|
||||
|
|
@ -1422,7 +1422,7 @@ gdk_directfb_draw_pixbuf (GdkDrawable *drawable,
|
|||
pb_pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
pb_rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
}
|
||||
|
||||
|
||||
if (pb_n_channels == 4)
|
||||
{
|
||||
guchar *buf = pb_pixels + src_y * pb_rowstride + src_x * 4;
|
||||
|
|
|
|||
|
|
@ -62,9 +62,9 @@ void
|
|||
_gdk_init_input_core (void)
|
||||
{
|
||||
GdkDisplay *display = GDK_DISPLAY_OBJECT (_gdk_display);
|
||||
|
||||
|
||||
_gdk_core_pointer = g_object_new (GDK_TYPE_DEVICE, NULL);
|
||||
|
||||
|
||||
_gdk_core_pointer->name = "Core Pointer";
|
||||
_gdk_core_pointer->source = GDK_SOURCE_MOUSE;
|
||||
_gdk_core_pointer->mode = GDK_MODE_SCREEN;
|
||||
|
|
|
|||
92
gdk/gdk.c
92
gdk/gdk.c
|
|
@ -21,7 +21,7 @@
|
|||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
||||
* files for a list of changes. These files are distributed with
|
||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
|
@ -98,7 +98,7 @@ gdk_arg_debug_cb (const char *key, const char *value, gpointer user_data, GError
|
|||
|
||||
if (debug_value == 0 && value != NULL && strcmp (value, "") != 0)
|
||||
{
|
||||
g_set_error (error,
|
||||
g_set_error (error,
|
||||
G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
|
||||
_("Error parsing option --gdk-debug"));
|
||||
return FALSE;
|
||||
|
|
@ -118,7 +118,7 @@ gdk_arg_no_debug_cb (const char *key, const char *value, gpointer user_data, GEr
|
|||
|
||||
if (debug_value == 0 && value != NULL && strcmp (value, "") != 0)
|
||||
{
|
||||
g_set_error (error,
|
||||
g_set_error (error,
|
||||
G_OPTION_ERROR, G_OPTION_ERROR_FAILED,
|
||||
_("Error parsing option --gdk-no-debug"));
|
||||
return FALSE;
|
||||
|
|
@ -160,20 +160,20 @@ static const GOptionEntry gdk_args[] = {
|
|||
/* Description of --screen=SCREEN in --help output */ N_("X screen to use"),
|
||||
/* Placeholder in --screen=SCREEN in --help output */ N_("SCREEN") },
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
{ "gdk-debug", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_debug_cb,
|
||||
{ "gdk-debug", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_debug_cb,
|
||||
/* Description of --gdk-debug=FLAGS in --help output */ N_("GDK debugging flags to set"),
|
||||
/* Placeholder in --gdk-debug=FLAGS in --help output */ N_("FLAGS") },
|
||||
{ "gdk-no-debug", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_no_debug_cb,
|
||||
{ "gdk-no-debug", 0, 0, G_OPTION_ARG_CALLBACK, gdk_arg_no_debug_cb,
|
||||
/* Description of --gdk-no-debug=FLAGS in --help output */ N_("GDK debugging flags to unset"),
|
||||
/* Placeholder in --gdk-no-debug=FLAGS in --help output */ N_("FLAGS") },
|
||||
#endif
|
||||
#endif
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
/**
|
||||
* gdk_add_option_entries_libgtk_only:
|
||||
* @group: An option group.
|
||||
*
|
||||
*
|
||||
* Appends gdk option entries to the passed in option group. This is
|
||||
* not public API and must not be used by applications.
|
||||
**/
|
||||
|
|
@ -195,7 +195,7 @@ gdk_pre_parse_libgtk_only (void)
|
|||
gdk_progclass = g_strdup (g_get_prgname ());
|
||||
if (gdk_progclass && gdk_progclass[0])
|
||||
gdk_progclass[0] = g_ascii_toupper (gdk_progclass[0]);
|
||||
|
||||
|
||||
#ifdef G_ENABLE_DEBUG
|
||||
{
|
||||
gchar *debug_string = getenv("GDK_DEBUG");
|
||||
|
|
@ -216,15 +216,15 @@ gdk_pre_parse_libgtk_only (void)
|
|||
|
||||
/* Do any setup particular to the windowing system
|
||||
*/
|
||||
_gdk_windowing_init ();
|
||||
_gdk_windowing_init ();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* gdk_parse_args:
|
||||
* @argc: the number of command line arguments.
|
||||
* @argv: (inout) (array length=argc): the array of command line arguments.
|
||||
*
|
||||
*
|
||||
* Parse command line arguments, and store for future
|
||||
* use by calls to gdk_display_open().
|
||||
*
|
||||
|
|
@ -248,13 +248,13 @@ gdk_parse_args (int *argc,
|
|||
return;
|
||||
|
||||
gdk_pre_parse_libgtk_only ();
|
||||
|
||||
|
||||
option_context = g_option_context_new (NULL);
|
||||
g_option_context_set_ignore_unknown_options (option_context, TRUE);
|
||||
g_option_context_set_help_enabled (option_context, FALSE);
|
||||
option_group = g_option_group_new (NULL, NULL, NULL, NULL, NULL);
|
||||
g_option_context_set_main_group (option_context, option_group);
|
||||
|
||||
|
||||
g_option_group_add_entries (option_group, gdk_args);
|
||||
g_option_group_add_entries (option_group, _gdk_windowing_args);
|
||||
|
||||
|
|
@ -271,7 +271,7 @@ gdk_parse_args (int *argc,
|
|||
GDK_NOTE (MISC, g_message ("progname: \"%s\"", g_get_prgname ()));
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* gdk_get_display_arg_name:
|
||||
*
|
||||
* Gets the display name specified in the command line arguments passed
|
||||
|
|
@ -298,13 +298,13 @@ gdk_get_display_arg_name (void)
|
|||
|
||||
/**
|
||||
* gdk_display_open_default_libgtk_only:
|
||||
*
|
||||
*
|
||||
* Opens the default display specified by command line arguments or
|
||||
* environment variables, sets it as the default display, and returns
|
||||
* it. gdk_parse_args must have been called first. If the default
|
||||
* display has previously been set, simply returns that. An internal
|
||||
* function that should not be used by applications.
|
||||
*
|
||||
*
|
||||
* Return value: the default display, if it could be opened,
|
||||
* otherwise %NULL.
|
||||
**/
|
||||
|
|
@ -314,7 +314,7 @@ gdk_display_open_default_libgtk_only (void)
|
|||
GdkDisplay *display;
|
||||
|
||||
g_return_val_if_fail (gdk_initialized, NULL);
|
||||
|
||||
|
||||
display = gdk_display_get_default ();
|
||||
if (display)
|
||||
return display;
|
||||
|
|
@ -325,14 +325,14 @@ gdk_display_open_default_libgtk_only (void)
|
|||
{
|
||||
g_free (_gdk_display_arg_name);
|
||||
_gdk_display_arg_name = g_strdup (_gdk_display_name);
|
||||
|
||||
|
||||
display = gdk_display_open (_gdk_display_name);
|
||||
}
|
||||
|
||||
|
||||
if (display)
|
||||
gdk_display_manager_set_default_display (gdk_display_manager_get (),
|
||||
display);
|
||||
|
||||
|
||||
return display;
|
||||
}
|
||||
|
||||
|
|
@ -459,7 +459,7 @@ gdk_threads_impl_unlock (void)
|
|||
|
||||
/**
|
||||
* gdk_threads_init:
|
||||
*
|
||||
*
|
||||
* Initializes GDK so that it can be used from multiple threads
|
||||
* in conjunction with gdk_threads_enter() and gdk_threads_leave().
|
||||
* g_thread_init() must be called previous to this function.
|
||||
|
|
@ -560,7 +560,7 @@ gdk_threads_dispatch_free (gpointer data)
|
|||
* removed from the list of event sources and will not be called again.
|
||||
*
|
||||
* This variant of g_idle_add_full() calls @function with the GDK lock
|
||||
* held. It can be thought of a MT-safe version for GTK+ widgets for the
|
||||
* held. It can be thought of a MT-safe version for GTK+ widgets for the
|
||||
* following use case, where you have to worry about idle_callback()
|
||||
* running in thread A and accessing @self after it has been finalized
|
||||
* in thread B:
|
||||
|
|
@ -627,13 +627,13 @@ gdk_threads_add_idle_full (gint priority,
|
|||
* @function: function to call
|
||||
* @data: data to pass to @function
|
||||
*
|
||||
* A wrapper for the common usage of gdk_threads_add_idle_full()
|
||||
* A wrapper for the common usage of gdk_threads_add_idle_full()
|
||||
* assigning the default priority, #G_PRIORITY_DEFAULT_IDLE.
|
||||
*
|
||||
* See gdk_threads_add_idle_full().
|
||||
*
|
||||
* Return value: the ID (greater than 0) of the event source.
|
||||
*
|
||||
*
|
||||
* Since: 2.12
|
||||
*/
|
||||
guint
|
||||
|
|
@ -656,8 +656,8 @@ gdk_threads_add_idle (GSourceFunc function,
|
|||
* @notify: (allow-none): function to call when the timeout is removed, or %NULL
|
||||
*
|
||||
* Sets a function to be called at regular intervals holding the GDK lock,
|
||||
* with the given priority. The function is called repeatedly until it
|
||||
* returns %FALSE, at which point the timeout is automatically destroyed
|
||||
* with the given priority. The function is called repeatedly until it
|
||||
* returns %FALSE, at which point the timeout is automatically destroyed
|
||||
* and the function will not be called again. The @notify function is
|
||||
* called when the timeout is destroyed. The first call to the
|
||||
* function will be at the end of the first @interval.
|
||||
|
|
@ -668,39 +668,39 @@ gdk_threads_add_idle (GSourceFunc function,
|
|||
* timeout is recalculated based on the current time and the given interval
|
||||
* (it does not try to 'catch up' time lost in delays).
|
||||
*
|
||||
* This variant of g_timeout_add_full() can be thought of a MT-safe version
|
||||
* This variant of g_timeout_add_full() can be thought of a MT-safe version
|
||||
* for GTK+ widgets for the following use case:
|
||||
*
|
||||
* |[
|
||||
* static gboolean timeout_callback (gpointer data)
|
||||
* {
|
||||
* SomeWidget *self = data;
|
||||
*
|
||||
*
|
||||
* /* do stuff with self */
|
||||
*
|
||||
*
|
||||
* self->timeout_id = 0;
|
||||
*
|
||||
*
|
||||
* return FALSE;
|
||||
* }
|
||||
*
|
||||
*
|
||||
* static void some_widget_do_stuff_later (SomeWidget *self)
|
||||
* {
|
||||
* self->timeout_id = g_timeout_add (timeout_callback, self)
|
||||
* }
|
||||
*
|
||||
*
|
||||
* static void some_widget_finalize (GObject *object)
|
||||
* {
|
||||
* SomeWidget *self = SOME_WIDGET (object);
|
||||
*
|
||||
*
|
||||
* if (self->timeout_id)
|
||||
* g_source_remove (self->timeout_id);
|
||||
*
|
||||
*
|
||||
* G_OBJECT_CLASS (parent_class)->finalize (object);
|
||||
* }
|
||||
* ]|
|
||||
*
|
||||
* Return value: the ID (greater than 0) of the event source.
|
||||
*
|
||||
*
|
||||
* Since: 2.12
|
||||
*/
|
||||
guint
|
||||
|
|
@ -719,10 +719,10 @@ gdk_threads_add_timeout_full (gint priority,
|
|||
dispatch->data = data;
|
||||
dispatch->destroy = notify;
|
||||
|
||||
return g_timeout_add_full (priority,
|
||||
return g_timeout_add_full (priority,
|
||||
interval,
|
||||
gdk_threads_dispatch,
|
||||
dispatch,
|
||||
gdk_threads_dispatch,
|
||||
dispatch,
|
||||
gdk_threads_dispatch_free);
|
||||
}
|
||||
|
||||
|
|
@ -733,11 +733,11 @@ gdk_threads_add_timeout_full (gint priority,
|
|||
* @function: function to call
|
||||
* @data: data to pass to @function
|
||||
*
|
||||
* A wrapper for the common usage of gdk_threads_add_timeout_full()
|
||||
* A wrapper for the common usage of gdk_threads_add_timeout_full()
|
||||
* assigning the default priority, #G_PRIORITY_DEFAULT.
|
||||
*
|
||||
* See gdk_threads_add_timeout_full().
|
||||
*
|
||||
*
|
||||
* Return value: the ID (greater than 0) of the event source.
|
||||
*
|
||||
* Since: 2.12
|
||||
|
|
@ -766,7 +766,7 @@ gdk_threads_add_timeout (guint interval,
|
|||
* a good idea to use this function if you don't need finer granularity.
|
||||
*
|
||||
* Return value: the ID (greater than 0) of the event source.
|
||||
*
|
||||
*
|
||||
* Since: 2.14
|
||||
*/
|
||||
guint
|
||||
|
|
@ -785,10 +785,10 @@ gdk_threads_add_timeout_seconds_full (gint priority,
|
|||
dispatch->data = data;
|
||||
dispatch->destroy = notify;
|
||||
|
||||
return g_timeout_add_seconds_full (priority,
|
||||
return g_timeout_add_seconds_full (priority,
|
||||
interval,
|
||||
gdk_threads_dispatch,
|
||||
dispatch,
|
||||
gdk_threads_dispatch,
|
||||
dispatch,
|
||||
gdk_threads_dispatch_free);
|
||||
}
|
||||
|
||||
|
|
@ -798,11 +798,11 @@ gdk_threads_add_timeout_seconds_full (gint priority,
|
|||
* @function: function to call
|
||||
* @data: data to pass to @function
|
||||
*
|
||||
* A wrapper for the common usage of gdk_threads_add_timeout_seconds_full()
|
||||
* A wrapper for the common usage of gdk_threads_add_timeout_seconds_full()
|
||||
* assigning the default priority, #G_PRIORITY_DEFAULT.
|
||||
*
|
||||
* For details, see gdk_threads_add_timeout_full().
|
||||
*
|
||||
*
|
||||
* Return value: the ID (greater than 0) of the event source.
|
||||
*
|
||||
* Since: 2.14
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ GType gdk_rectangle_get_type (void) G_GNUC_CONST;
|
|||
|
||||
#define GDK_TYPE_RECTANGLE (gdk_rectangle_get_type ())
|
||||
|
||||
/* Conversion functions between wide char and multibyte strings.
|
||||
/* Conversion functions between wide char and multibyte strings.
|
||||
*/
|
||||
#ifndef GDK_DISABLE_DEPRECATED
|
||||
gchar *gdk_wcstombs (const GdkWChar *src);
|
||||
|
|
|
|||
|
|
@ -167,12 +167,12 @@ gdk_app_launch_context_set_screen (GdkAppLaunchContext *context,
|
|||
* @desktop: the number of a workspace, or -1
|
||||
*
|
||||
* Sets the workspace on which applications will be launched when
|
||||
* using this context when running under a window manager that
|
||||
* supports multiple workspaces, as described in the
|
||||
* <ulink url="http://www.freedesktop.org/Standards/wm-spec">Extended
|
||||
* Window Manager Hints</ulink>.
|
||||
* using this context when running under a window manager that
|
||||
* supports multiple workspaces, as described in the
|
||||
* <ulink url="http://www.freedesktop.org/Standards/wm-spec">Extended
|
||||
* Window Manager Hints</ulink>.
|
||||
*
|
||||
* When the workspace is not specified or @desktop is set to -1,
|
||||
* When the workspace is not specified or @desktop is set to -1,
|
||||
* it is up to the window manager to pick one, typically it will
|
||||
* be the current workspace.
|
||||
*
|
||||
|
|
@ -193,7 +193,7 @@ gdk_app_launch_context_set_desktop (GdkAppLaunchContext *context,
|
|||
* @timestamp: a timestamp
|
||||
*
|
||||
* Sets the timestamp of @context. The timestamp should ideally
|
||||
* be taken from the event that triggered the launch.
|
||||
* be taken from the event that triggered the launch.
|
||||
*
|
||||
* Window managers can use this information to avoid moving the
|
||||
* focus to the newly launched application when the user is busy
|
||||
|
|
@ -248,15 +248,15 @@ gdk_app_launch_context_set_icon (GdkAppLaunchContext *context,
|
|||
* @context: a #GdkAppLaunchContext
|
||||
* @icon_name: (allow-none): an icon name, or %NULL
|
||||
*
|
||||
* Sets the icon for applications that are launched with this context.
|
||||
* The @icon_name will be interpreted in the same way as the Icon field
|
||||
* in desktop files. See also gdk_app_launch_context_set_icon().
|
||||
* Sets the icon for applications that are launched with this context.
|
||||
* The @icon_name will be interpreted in the same way as the Icon field
|
||||
* in desktop files. See also gdk_app_launch_context_set_icon().
|
||||
*
|
||||
* If both @icon and @icon_name are set, the @icon_name takes priority.
|
||||
* If neither @icon or @icon_name is set, the icon is taken from either
|
||||
* the file that is passed to launched application or from the #GAppInfo
|
||||
* If neither @icon or @icon_name is set, the icon is taken from either
|
||||
* the file that is passed to launched application or from the #GAppInfo
|
||||
* for the launched application itself.
|
||||
*
|
||||
*
|
||||
* Since: 2.14
|
||||
*/
|
||||
void
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 2005 Red Hat, Inc.
|
||||
* Copyright (C) 2005 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
@ -33,18 +33,18 @@ gdk_ensure_surface_flush (gpointer surface)
|
|||
/**
|
||||
* gdk_cairo_create:
|
||||
* @drawable: a #GdkDrawable
|
||||
*
|
||||
*
|
||||
* Creates a Cairo context for drawing to @drawable.
|
||||
*
|
||||
* <note><para>
|
||||
* Note that due to double-buffering, Cairo contexts created
|
||||
* in a GTK+ expose event handler cannot be cached and reused
|
||||
* between different expose events.
|
||||
* Note that due to double-buffering, Cairo contexts created
|
||||
* in a GTK+ expose event handler cannot be cached and reused
|
||||
* between different expose events.
|
||||
* </para></note>
|
||||
*
|
||||
* Return value: A newly created Cairo context. Free with
|
||||
* cairo_destroy() when you are done drawing.
|
||||
*
|
||||
*
|
||||
* Since: 2.8
|
||||
**/
|
||||
cairo_t *
|
||||
|
|
@ -53,7 +53,7 @@ gdk_cairo_create (GdkDrawable *drawable)
|
|||
static const cairo_user_data_key_t key;
|
||||
cairo_surface_t *surface;
|
||||
cairo_t *cr;
|
||||
|
||||
|
||||
g_return_val_if_fail (GDK_IS_DRAWABLE (drawable), NULL);
|
||||
|
||||
surface = _gdk_drawable_ref_cairo_surface (drawable);
|
||||
|
|
@ -61,7 +61,7 @@ gdk_cairo_create (GdkDrawable *drawable)
|
|||
|
||||
if (GDK_DRAWABLE_GET_CLASS (drawable)->set_cairo_clip)
|
||||
GDK_DRAWABLE_GET_CLASS (drawable)->set_cairo_clip (drawable, cr);
|
||||
|
||||
|
||||
/* Ugly workaround for GTK not ensuring to flush surfaces before
|
||||
* directly accessing the drawable backed by the surface. Not visible
|
||||
* on X11 (where flushing is a no-op). For details, see
|
||||
|
|
@ -104,7 +104,7 @@ gdk_cairo_reset_clip (cairo_t *cr,
|
|||
* gdk_cairo_set_source_color:
|
||||
* @cr: a #cairo_t
|
||||
* @color: a #GdkColor
|
||||
*
|
||||
*
|
||||
* Sets the specified #GdkColor as the source color of @cr.
|
||||
*
|
||||
* Since: 2.8
|
||||
|
|
@ -115,7 +115,7 @@ gdk_cairo_set_source_color (cairo_t *cr,
|
|||
{
|
||||
g_return_if_fail (cr != NULL);
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
|
||||
cairo_set_source_rgb (cr,
|
||||
color->red / 65535.,
|
||||
color->green / 65535.,
|
||||
|
|
@ -126,7 +126,7 @@ gdk_cairo_set_source_color (cairo_t *cr,
|
|||
* gdk_cairo_rectangle:
|
||||
* @cr: a #cairo_t
|
||||
* @rectangle: a #GdkRectangle
|
||||
*
|
||||
*
|
||||
* Adds the given rectangle to the current path of @cr.
|
||||
*
|
||||
* Since: 2.8
|
||||
|
|
@ -147,7 +147,7 @@ gdk_cairo_rectangle (cairo_t *cr,
|
|||
* gdk_cairo_region:
|
||||
* @cr: a #cairo_t
|
||||
* @region: a #GdkRegion
|
||||
*
|
||||
*
|
||||
* Adds the given region to the current path of @cr.
|
||||
*
|
||||
* Since: 2.8
|
||||
|
|
@ -179,7 +179,7 @@ gdk_cairo_region (cairo_t *cr,
|
|||
* @pixbuf: a #GdkPixbuf
|
||||
* @pixbuf_x: X coordinate of location to place upper left corner of @pixbuf
|
||||
* @pixbuf_y: Y coordinate of location to place upper left corner of @pixbuf
|
||||
*
|
||||
*
|
||||
* Sets the given pixbuf as the source pattern for the Cairo context.
|
||||
* The pattern has an extend mode of %CAIRO_EXTEND_NONE and is aligned
|
||||
* so that the origin of @pixbuf is @pixbuf_x, @pixbuf_y
|
||||
|
|
@ -232,14 +232,14 @@ gdk_cairo_set_source_pixbuf (cairo_t *cr,
|
|||
if (n_channels == 3)
|
||||
{
|
||||
guchar *end = p + 3 * width;
|
||||
|
||||
|
||||
while (p < end)
|
||||
{
|
||||
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
|
||||
q[0] = p[2];
|
||||
q[1] = p[1];
|
||||
q[2] = p[0];
|
||||
#else
|
||||
#else
|
||||
q[1] = p[0];
|
||||
q[2] = p[1];
|
||||
q[3] = p[2];
|
||||
|
|
@ -252,7 +252,7 @@ gdk_cairo_set_source_pixbuf (cairo_t *cr,
|
|||
{
|
||||
guchar *end = p + 4 * width;
|
||||
guint t1,t2,t3;
|
||||
|
||||
|
||||
#define MULT(d,c,a,t) G_STMT_START { t = c * a + 0x80; d = ((t >> 8) + t) >> 8; } G_STMT_END
|
||||
|
||||
while (p < end)
|
||||
|
|
@ -262,17 +262,17 @@ gdk_cairo_set_source_pixbuf (cairo_t *cr,
|
|||
MULT(q[1], p[1], p[3], t2);
|
||||
MULT(q[2], p[0], p[3], t3);
|
||||
q[3] = p[3];
|
||||
#else
|
||||
#else
|
||||
q[0] = p[3];
|
||||
MULT(q[1], p[0], p[3], t1);
|
||||
MULT(q[2], p[1], p[3], t2);
|
||||
MULT(q[3], p[2], p[3], t3);
|
||||
#endif
|
||||
|
||||
|
||||
p += 4;
|
||||
q += 4;
|
||||
}
|
||||
|
||||
|
||||
#undef MULT
|
||||
}
|
||||
|
||||
|
|
@ -291,7 +291,7 @@ out:
|
|||
* @pixmap: a #GdkPixmap
|
||||
* @pixmap_x: X coordinate of location to place upper left corner of @pixmap
|
||||
* @pixmap_y: Y coordinate of location to place upper left corner of @pixmap
|
||||
*
|
||||
*
|
||||
* Sets the given pixmap as the source pattern for the Cairo context.
|
||||
* The pattern has an extend mode of %CAIRO_EXTEND_NONE and is aligned
|
||||
* so that the origin of @pixmap is @pixmap_x, @pixmap_y
|
||||
|
|
@ -309,7 +309,7 @@ gdk_cairo_set_source_pixmap (cairo_t *cr,
|
|||
double pixmap_y)
|
||||
{
|
||||
cairo_surface_t *surface;
|
||||
|
||||
|
||||
surface = _gdk_drawable_ref_cairo_surface (GDK_DRAWABLE (pixmap));
|
||||
cairo_set_source_surface (cr, surface, pixmap_x, pixmap_y);
|
||||
cairo_surface_destroy (surface);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/* GDK - The GIMP Drawing Kit
|
||||
* Copyright (C) 2005 Red Hat, Inc.
|
||||
* Copyright (C) 2005 Red Hat, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GTK+ Team. See the ChangeLog
|
||||
* files for a list of changes. These files are distributed with
|
||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
||||
* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
|
@ -66,9 +66,9 @@ gdk_colormap_unref (GdkColormap *cmap)
|
|||
/**
|
||||
* gdk_colormap_get_visual:
|
||||
* @colormap: a #GdkColormap.
|
||||
*
|
||||
*
|
||||
* Returns the visual for which a given colormap was created.
|
||||
*
|
||||
*
|
||||
* Return value: the visual of the colormap.
|
||||
**/
|
||||
GdkVisual *
|
||||
|
|
@ -84,11 +84,11 @@ gdk_colormap_get_visual (GdkColormap *colormap)
|
|||
* @colormap: a #GdkColormap.
|
||||
* @colors: the new color values.
|
||||
* @ncolors: the number of colors to change.
|
||||
*
|
||||
*
|
||||
* Changes the value of the first @ncolors colors in
|
||||
* a private colormap. This function is obsolete and
|
||||
* should not be used. See gdk_color_change().
|
||||
**/
|
||||
**/
|
||||
void
|
||||
gdk_colors_store (GdkColormap *colormap,
|
||||
GdkColor *colors,
|
||||
|
|
@ -110,17 +110,17 @@ gdk_colors_store (GdkColormap *colormap,
|
|||
/**
|
||||
* gdk_color_copy:
|
||||
* @color: a #GdkColor.
|
||||
*
|
||||
*
|
||||
* Makes a copy of a color structure. The result
|
||||
* must be freed using gdk_color_free().
|
||||
*
|
||||
*
|
||||
* Return value: a copy of @color.
|
||||
**/
|
||||
GdkColor*
|
||||
gdk_color_copy (const GdkColor *color)
|
||||
{
|
||||
GdkColor *new_color;
|
||||
|
||||
|
||||
g_return_val_if_fail (color != NULL, NULL);
|
||||
|
||||
new_color = g_slice_new (GdkColor);
|
||||
|
|
@ -131,8 +131,8 @@ gdk_color_copy (const GdkColor *color)
|
|||
/**
|
||||
* gdk_color_free:
|
||||
* @color: a #GdkColor.
|
||||
*
|
||||
* Frees a color structure created with
|
||||
*
|
||||
* Frees a color structure created with
|
||||
* gdk_color_copy().
|
||||
**/
|
||||
void
|
||||
|
|
@ -147,10 +147,10 @@ gdk_color_free (GdkColor *color)
|
|||
* gdk_color_white:
|
||||
* @colormap: a #GdkColormap.
|
||||
* @color: the location to store the color.
|
||||
*
|
||||
*
|
||||
* Returns the white color for a given colormap. The resulting
|
||||
* value has already allocated been allocated.
|
||||
*
|
||||
* value has already allocated been allocated.
|
||||
*
|
||||
* Return value: %TRUE if the allocation succeeded.
|
||||
**/
|
||||
gboolean
|
||||
|
|
@ -179,10 +179,10 @@ gdk_color_white (GdkColormap *colormap,
|
|||
* gdk_color_black:
|
||||
* @colormap: a #GdkColormap.
|
||||
* @color: the location to store the color.
|
||||
*
|
||||
*
|
||||
* Returns the black color for a given colormap. The resulting
|
||||
* value has already been allocated.
|
||||
*
|
||||
* value has already been allocated.
|
||||
*
|
||||
* Return value: %TRUE if the allocation succeeded.
|
||||
**/
|
||||
gboolean
|
||||
|
|
@ -224,7 +224,7 @@ gdk_color_black (GdkColormap *colormap,
|
|||
* existing colors if the color cannot be allocated as requested.
|
||||
*
|
||||
* Allocates a single color from a colormap.
|
||||
*
|
||||
*
|
||||
* Return value: %TRUE if the allocation succeeded.
|
||||
**/
|
||||
gboolean
|
||||
|
|
@ -244,11 +244,11 @@ gdk_colormap_alloc_color (GdkColormap *colormap,
|
|||
/**
|
||||
* gdk_color_alloc:
|
||||
* @colormap: a #GdkColormap.
|
||||
* @color: The color to allocate. On return, the
|
||||
* @color: The color to allocate. On return, the
|
||||
* <structfield>pixel</structfield> field will be filled in.
|
||||
*
|
||||
*
|
||||
* Allocates a single color from a colormap.
|
||||
*
|
||||
*
|
||||
* Return value: %TRUE if the allocation succeeded.
|
||||
*
|
||||
* Deprecated: 2.2: Use gdk_colormap_alloc_color() instead.
|
||||
|
|
@ -267,10 +267,10 @@ gdk_color_alloc (GdkColormap *colormap,
|
|||
/**
|
||||
* gdk_color_hash:
|
||||
* @colora: a #GdkColor.
|
||||
*
|
||||
*
|
||||
* A hash function suitable for using for a hash
|
||||
* table that stores #GdkColor's.
|
||||
*
|
||||
*
|
||||
* Return value: The hash function applied to @colora
|
||||
**/
|
||||
guint
|
||||
|
|
@ -286,9 +286,9 @@ gdk_color_hash (const GdkColor *colora)
|
|||
* gdk_color_equal:
|
||||
* @colora: a #GdkColor.
|
||||
* @colorb: another #GdkColor.
|
||||
*
|
||||
* Compares two colors.
|
||||
*
|
||||
*
|
||||
* Compares two colors.
|
||||
*
|
||||
* Return value: %TRUE if the two colors compare equal
|
||||
**/
|
||||
gboolean
|
||||
|
|
@ -307,7 +307,7 @@ GType
|
|||
gdk_color_get_type (void)
|
||||
{
|
||||
static GType our_type = 0;
|
||||
|
||||
|
||||
if (our_type == 0)
|
||||
our_type = g_boxed_type_register_static (g_intern_static_string ("GdkColor"),
|
||||
(GBoxedCopyFunc)gdk_color_copy,
|
||||
|
|
@ -332,7 +332,7 @@ gdk_color_get_type (void)
|
|||
* red, green, and blue components of the color, respectively. (White
|
||||
* in the four forms is '#fff' '#ffffff' '#fffffffff' and
|
||||
* '#ffffffffffff')
|
||||
*
|
||||
*
|
||||
* Return value: %TRUE if the parsing succeeded.
|
||||
**/
|
||||
gboolean
|
||||
|
|
@ -382,10 +382,10 @@ gdk_color_to_string (const GdkColor *color)
|
|||
|
||||
/**
|
||||
* gdk_colormap_get_system:
|
||||
*
|
||||
*
|
||||
* Gets the system's default colormap for the default screen. (See
|
||||
* gdk_colormap_get_system_for_screen ())
|
||||
*
|
||||
*
|
||||
* Return value: the default colormap.
|
||||
**/
|
||||
GdkColormap*
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue