Start converting to C++. Start simplified icon placement.

This commit is contained in:
Mike Small 2019-10-06 22:28:07 -04:00
parent 6a3d5089d7
commit 740a9e9e79
24 changed files with 4759 additions and 3144 deletions

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15.1 from Makefile.am.
# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -242,6 +242,9 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@ -270,7 +273,6 @@ LIBS = @LIBS@
LIB_MAN_DIR = @LIB_MAN_DIR@
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MAN_SUBSTS = @MAN_SUBSTS@
MISC_MAN_DIR = @MISC_MAN_DIR@
@ -305,6 +307,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@ -359,7 +362,7 @@ all: config.h
.SUFFIXES:
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@ -385,9 +388,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
$(top_srcdir)/configure: $(am__configure_deps)
$(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
@ -398,7 +401,7 @@ config.h: stamp-h1
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
$(srcdir)/config.h.in: $(am__configure_deps)
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
rm -f stamp-h1
touch $@
@ -580,7 +583,7 @@ distdir: $(DISTFILES)
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__post_remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
@ -605,7 +608,7 @@ dist-shar: distdir
@echo WARNING: "Support for shar distribution archives is" \
"deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__post_remove_distdir)
dist-zip: distdir
@ -623,7 +626,7 @@ dist dist-all:
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
@ -633,7 +636,7 @@ distcheck: dist
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac

2515
aclocal.m4 vendored

File diff suppressed because it is too large Load Diff

595
configure vendored
View File

@ -628,6 +628,12 @@ LTLIBOBJS
LIBOBJS
TWM_LIBS
TWM_CFLAGS
am__fastdepCXX_FALSE
am__fastdepCXX_TRUE
CXXDEPMODE
ac_ct_CXX
CXXFLAGS
CXX
LEXLIB
LEX_OUTPUT_ROOT
LEX
@ -665,9 +671,6 @@ CHANGELOG_CMD
STRICT_CFLAGS
CWARNFLAGS
BASE_CFLAGS
MAINT
MAINTAINER_MODE_FALSE
MAINTAINER_MODE_TRUE
AM_BACKSLASH
AM_DEFAULT_VERBOSITY
AM_DEFAULT_V
@ -758,7 +761,6 @@ ac_user_opts='
enable_option_checking
enable_dependency_tracking
enable_silent_rules
enable_maintainer_mode
enable_selective_werror
enable_strict_compilation
'
@ -776,6 +778,9 @@ PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR
YACC
YFLAGS
CXX
CXXFLAGS
CCC
TWM_CFLAGS
TWM_LIBS'
@ -1402,9 +1407,6 @@ Optional Features:
speeds up one-time build
--enable-silent-rules less verbose build output (undo: "make V=1")
--disable-silent-rules verbose build output (undo: "make V=0")
--enable-maintainer-mode
enable make rules and dependencies not useful (and
sometimes confusing) to the casual installer
--disable-selective-werror
Turn off selective compiler errors. (default:
enabled)
@ -1432,6 +1434,8 @@ Some influential environment variables:
YFLAGS The list of arguments that will be passed by default to $YACC.
This script will default YFLAGS to the empty string to avoid a
default value of `-d' given by some make applications.
CXX C++ compiler command
CXXFLAGS C++ compiler flags
TWM_CFLAGS C compiler flags for TWM, overriding pkg-config
TWM_LIBS linker flags for TWM, overriding pkg-config
@ -1846,6 +1850,44 @@ fi
} # ac_fn_c_try_link
# ac_fn_cxx_try_compile LINENO
# ----------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
ac_fn_cxx_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
rm -f conftest.$ac_objext
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
grep -v '^ *+' conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_cxx_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then :
ac_retval=0
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_cxx_try_compile
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
@ -4388,29 +4430,6 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
# Check whether --enable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then :
enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
else
USE_MAINTAINER_MODE=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
$as_echo "$USE_MAINTAINER_MODE" >&6; }
if test $USE_MAINTAINER_MODE = yes; then
MAINTAINER_MODE_TRUE=
MAINTAINER_MODE_FALSE='#'
else
MAINTAINER_MODE_TRUE='#'
MAINTAINER_MODE_FALSE=
fi
MAINT=$MAINTAINER_MODE_TRUE
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
if ${ac_cv_prog_cc_c99+:} false; then :
@ -6772,7 +6791,124 @@ $as_echo "$supported" >&6; }
fi
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wredundant-decls])
xorg_testset_save_CFLAGS="$CFLAGS"
if test "x$xorg_testset_cc_unknown_warning_option" = "x" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unknown-warning-option" >&5
$as_echo_n "checking if $CC supports -Werror=unknown-warning-option... " >&6; }
if ${xorg_cv_cc_flag_unknown_warning_option+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
xorg_cv_cc_flag_unknown_warning_option=yes
else
xorg_cv_cc_flag_unknown_warning_option=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unknown_warning_option" >&5
$as_echo "$xorg_cv_cc_flag_unknown_warning_option" >&6; }
xorg_testset_cc_unknown_warning_option=$xorg_cv_cc_flag_unknown_warning_option
CFLAGS="$xorg_testset_save_CFLAGS"
fi
if test "x$xorg_testset_cc_unused_command_line_argument" = "x" ; then
if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
fi
CFLAGS="$CFLAGS -Werror=unused-command-line-argument"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Werror=unused-command-line-argument" >&5
$as_echo_n "checking if $CC supports -Werror=unused-command-line-argument... " >&6; }
if ${xorg_cv_cc_flag_unused_command_line_argument+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
xorg_cv_cc_flag_unused_command_line_argument=yes
else
xorg_cv_cc_flag_unused_command_line_argument=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xorg_cv_cc_flag_unused_command_line_argument" >&5
$as_echo "$xorg_cv_cc_flag_unused_command_line_argument" >&6; }
xorg_testset_cc_unused_command_line_argument=$xorg_cv_cc_flag_unused_command_line_argument
CFLAGS="$xorg_testset_save_CFLAGS"
fi
found="no"
if test $found = "no" ; then
if test "x$xorg_testset_cc_unknown_warning_option" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unknown-warning-option"
fi
if test "x$xorg_testset_cc_unused_command_line_argument" = "xyes" ; then
CFLAGS="$CFLAGS -Werror=unused-command-line-argument"
fi
CFLAGS="$CFLAGS -Wredundant-decls"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports -Wredundant-decls" >&5
$as_echo_n "checking if $CC supports -Wredundant-decls... " >&6; }
cacheid=xorg_cv_cc_flag__Wredundant_decls
if eval \${$cacheid+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int i;
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
eval $cacheid=yes
else
eval $cacheid=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
CFLAGS="$xorg_testset_save_CFLAGS"
eval supported=\$$cacheid
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $supported" >&5
$as_echo "$supported" >&6; }
if test "$supported" = "yes" ; then
BASE_CFLAGS="$BASE_CFLAGS -Wredundant-decls"
found="yes"
fi
fi
@ -10988,6 +11124,391 @@ fi
rm -f conftest.l $LEX_OUTPUT_ROOT.c
fi
ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
if test -z "$CXX"; then
if test -n "$CCC"; then
CXX=$CCC
else
if test -n "$ac_tool_prefix"; then
for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_CXX+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CXX"; then
ac_cv_prog_CXX="$CXX" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
$as_echo "$CXX" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$CXX" && break
done
fi
if test -z "$CXX"; then
ac_ct_CXX=$CXX
for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_prog_ac_ct_CXX+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CXX"; then
ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
if test -n "$ac_ct_CXX"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
$as_echo "$ac_ct_CXX" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
test -n "$ac_ct_CXX" && break
done
if test "x$ac_ct_CXX" = x; then
CXX="g++"
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CXX=$ac_ct_CXX
fi
fi
fi
fi
# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
set X $ac_compile
ac_compiler=$2
for ac_option in --version -v -V -qversion; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
sed '10a\
... rest of stderr output deleted ...
10q' conftest.err >conftest.er1
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
if ${ac_cv_cxx_compiler_gnu+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
#ifndef __GNUC__
choke me
#endif
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
ac_compiler_gnu=yes
else
ac_compiler_gnu=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
if test $ac_compiler_gnu = yes; then
GXX=yes
else
GXX=
fi
ac_test_CXXFLAGS=${CXXFLAGS+set}
ac_save_CXXFLAGS=$CXXFLAGS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
$as_echo_n "checking whether $CXX accepts -g... " >&6; }
if ${ac_cv_prog_cxx_g+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_save_cxx_werror_flag=$ac_cxx_werror_flag
ac_cxx_werror_flag=yes
ac_cv_prog_cxx_g=no
CXXFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
ac_cv_prog_cxx_g=yes
else
CXXFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
else
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
CXXFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
ac_cv_prog_cxx_g=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
ac_cxx_werror_flag=$ac_save_cxx_werror_flag
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
$as_echo "$ac_cv_prog_cxx_g" >&6; }
if test "$ac_test_CXXFLAGS" = set; then
CXXFLAGS=$ac_save_CXXFLAGS
elif test $ac_cv_prog_cxx_g = yes; then
if test "$GXX" = yes; then
CXXFLAGS="-g -O2"
else
CXXFLAGS="-g"
fi
else
if test "$GXX" = yes; then
CXXFLAGS="-O2"
else
CXXFLAGS=
fi
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
depcc="$CXX" am_compiler_list=
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
$as_echo_n "checking dependency style of $depcc... " >&6; }
if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
# We make a subdir and do the tests there. Otherwise we can end up
# making bogus files that we don't know about and never remove. For
# instance it was reported that on HP-UX the gcc test will end up
# making a dummy file named 'D' -- because '-MD' means "put the output
# in D".
rm -rf conftest.dir
mkdir conftest.dir
# Copy depcomp to subdir because otherwise we won't find it if we're
# using a relative directory.
cp "$am_depcomp" conftest.dir
cd conftest.dir
# We will build objects and dependencies in a subdirectory because
# it helps to detect inapplicable dependency modes. For instance
# both Tru64's cc and ICC support -MD to output dependencies as a
# side effect of compilation, but ICC will put the dependencies in
# the current directory while Tru64 will put them in the object
# directory.
mkdir sub
am_cv_CXX_dependencies_compiler_type=none
if test "$am_compiler_list" = ""; then
am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
fi
am__universal=false
case " $depcc " in #(
*\ -arch\ *\ -arch\ *) am__universal=true ;;
esac
for depmode in $am_compiler_list; do
# Setup a source with many dependencies, because some compilers
# like to wrap large dependency lists on column 80 (with \), and
# we should not choose a depcomp mode which is confused by this.
#
# We need to recreate these files for each test, as the compiler may
# overwrite some of them when testing with obscure command lines.
# This happens at least with the AIX C compiler.
: > sub/conftest.c
for i in 1 2 3 4 5 6; do
echo '#include "conftst'$i'.h"' >> sub/conftest.c
# Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
# Solaris 10 /bin/sh.
echo '/* dummy */' > sub/conftst$i.h
done
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
# We check with '-c' and '-o' for the sake of the "dashmstdout"
# mode. It turns out that the SunPro C++ compiler does not properly
# handle '-M -o', and we need to detect this. Also, some Intel
# versions had trouble with output in subdirs.
am__obj=sub/conftest.${OBJEXT-o}
am__minus_obj="-o $am__obj"
case $depmode in
gcc)
# This depmode causes a compiler race in universal mode.
test "$am__universal" = false || continue
;;
nosideeffect)
# After this tag, mechanisms are not by side-effect, so they'll
# only be used when explicitly requested.
if test "x$enable_dependency_tracking" = xyes; then
continue
else
break
fi
;;
msvc7 | msvc7msys | msvisualcpp | msvcmsys)
# This compiler won't grok '-c -o', but also, the minuso test has
# not run yet. These depmodes are late enough in the game, and
# so weak that their functioning should not be impacted.
am__obj=conftest.${OBJEXT-o}
am__minus_obj=
;;
none) break ;;
esac
if depmode=$depmode \
source=sub/conftest.c object=$am__obj \
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
>/dev/null 2>conftest.err &&
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
# icc doesn't choke on unknown options, it will just issue warnings
# or remarks (even with -Werror). So we grep stderr for any message
# that says an option was ignored or not supported.
# When given -MP, icc 7.0 and 7.1 complain thusly:
# icc: Command line warning: ignoring option '-M'; no argument required
# The diagnosis changed in icc 8.0:
# icc: Command line remark: option '-MP' not supported
if (grep 'ignoring option' conftest.err ||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
am_cv_CXX_dependencies_compiler_type=$depmode
break
fi
fi
done
cd ..
rm -rf conftest.dir
else
am_cv_CXX_dependencies_compiler_type=none
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
if
test "x$enable_dependency_tracking" != xno \
&& test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
am__fastdepCXX_TRUE=
am__fastdepCXX_FALSE='#'
else
am__fastdepCXX_TRUE='#'
am__fastdepCXX_FALSE=
fi
for ac_func in mkstemp
do :
@ -11004,8 +11525,8 @@ done
# Checks for pkg-config packages
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TWM" >&5
$as_echo_n "checking for TWM... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for x11 xext xt xmu ice sm xproto >= 7.0.17" >&5
$as_echo_n "checking for x11 xext xt xmu ice sm xproto >= 7.0.17... " >&6; }
if test -n "$TWM_CFLAGS"; then
pkg_cv_TWM_CFLAGS="$TWM_CFLAGS"
@ -11045,7 +11566,7 @@ fi
if test $pkg_failed = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
@ -11072,7 +11593,7 @@ Alternatively, you may set the environment variables TWM_CFLAGS
and TWM_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details." "$LINENO" 5
elif test $pkg_failed = untried; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
@ -11229,8 +11750,8 @@ else
am__EXEEXT_FALSE=
fi
if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi

View File

@ -45,6 +45,7 @@ if test ! -f "$srcdir/gram.c"; then
fi
fi
AC_PROG_LEX
AC_PROG_CXX
AC_CHECK_FUNCS([mkstemp])

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15.1 from Makefile.am.
# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -191,6 +191,9 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@ -219,7 +222,6 @@ LIBS = @LIBS@
LIB_MAN_DIR = @LIB_MAN_DIR@
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MAN_SUBSTS = @MAN_SUBSTS@ -e 's|__datadir__|$(datadir)|g'
MISC_MAN_DIR = @MISC_MAN_DIR@
@ -254,6 +256,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@ -309,7 +312,7 @@ all: all-am
.SUFFIXES:
.SUFFIXES: .$(APP_MAN_SUFFIX) .man
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@ -333,9 +336,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-appmanDATA: $(appman_DATA)

View File

@ -28,11 +28,10 @@ rcdir = ${datadir}/X11/twmruined
dist_rc_DATA = system.twmruinedrc
AM_CPPFLAGS = \
-DXVENDORNAME=\"The\ X.Org\ Foundation\" \
-DXORG_RELEASE=\"Release\ $(VERSION)\" \
-DSYSTEM_INIT_FILE=\"${datadir}/X11/twmruined/system.twmruinedrc\"
AM_CFLAGS = -Werror $(TWM_CFLAGS)
AM_CXXFLAGS = -std=c++11
twmruined_LDADD = $(TWM_LIBS)
twmruined_SOURCES = \
@ -44,7 +43,7 @@ twmruined_SOURCES = \
events.h \
gc.c \
gc.h \
icons.c \
icons.cc \
icons.h \
list.c \
list.h \

View File

@ -1,7 +1,7 @@
# Makefile.in generated by automake 1.15.1 from Makefile.am.
# Makefile.in generated by automake 1.15 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@ -160,14 +160,25 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
AM_V_CXX = $(am__v_CXX_@AM_V@)
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
am__v_CXX_0 = @echo " CXX " $@;
am__v_CXX_1 =
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
am__v_CXXLD_0 = @echo " CXXLD " $@;
am__v_CXXLD_1 =
LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
AM_V_LEX = $(am__v_LEX_@AM_V@)
am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
am__v_LEX_0 = @echo " LEX " $@;
am__v_LEX_1 =
YLWRAP = $(top_srcdir)/ylwrap
@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \
-e s/c++$$/h++/ -e s/c$$/h/
YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
@ -251,6 +262,9 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@ -279,7 +293,6 @@ LIBS = @LIBS@
LIB_MAN_DIR = @LIB_MAN_DIR@
LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MAN_SUBSTS = @MAN_SUBSTS@
MISC_MAN_DIR = @MISC_MAN_DIR@
@ -314,6 +327,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@ -363,11 +377,10 @@ AM_YFLAGS = -d
rcdir = ${datadir}/X11/twmruined
dist_rc_DATA = system.twmruinedrc
AM_CPPFLAGS = \
-DXVENDORNAME=\"The\ X.Org\ Foundation\" \
-DXORG_RELEASE=\"Release\ $(VERSION)\" \
-DSYSTEM_INIT_FILE=\"${datadir}/X11/twmruined/system.twmruinedrc\"
AM_CFLAGS = -Werror $(TWM_CFLAGS)
AM_CXXFLAGS = -std=c++11
twmruined_LDADD = $(TWM_LIBS)
twmruined_SOURCES = \
add_window.c \
@ -378,7 +391,7 @@ twmruined_SOURCES = \
events.h \
gc.c \
gc.h \
icons.c \
icons.cc \
icons.h \
list.c \
list.h \
@ -406,8 +419,8 @@ all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
.SUFFIXES: .c .l .o .obj .y
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
.SUFFIXES: .c .cc .l .o .obj .y
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
@ -431,9 +444,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@ -484,7 +497,7 @@ gram.h: gram.c
twmruined$(EXEEXT): $(twmruined_OBJECTS) $(twmruined_DEPENDENCIES) $(EXTRA_twmruined_DEPENDENCIES)
@rm -f twmruined$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(twmruined_OBJECTS) $(twmruined_LDADD) $(LIBS)
$(AM_V_CXXLD)$(CXXLINK) $(twmruined_OBJECTS) $(twmruined_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@ -523,6 +536,20 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cc.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
.cc.obj:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.l.c:
$(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)

View File

@ -180,8 +180,8 @@ AddWindow(Window w)
if (!I18N_FetchName(dpy, tmp_win->w, &name))
name = NULL;
tmp_win->class = NoClass;
XGetClassHint(dpy, tmp_win->w, &tmp_win->class);
tmp_win->classh = NoClass;
XGetClassHint(dpy, tmp_win->w, &tmp_win->classh);
FetchWmProtocols (tmp_win);
FetchWmColormapWindows (tmp_win);
@ -260,25 +260,25 @@ AddWindow(Window w)
tmp_win->transient = Transient(tmp_win->w, &tmp_win->transientfor);
tmp_win->nameChanged = 0;
if (tmp_win->class.res_name == NULL)
tmp_win->class.res_name = NoName;
if (tmp_win->class.res_class == NULL)
tmp_win->class.res_class = NoName;
if (tmp_win->classh.res_name == NULL)
tmp_win->classh.res_name = NoName;
if (tmp_win->classh.res_class == NULL)
tmp_win->classh.res_class = NoName;
tmp_win->full_name = strdup(tmp_win->name);
namelen = strlen (tmp_win->name);
tmp_win->stackmode = Scr->StackMode &&
(!(short)(long) LookInList(Scr->NoStackModeL, tmp_win->full_name,
&tmp_win->class));
&tmp_win->classh));
tmp_win->auto_raise = (short)(long) LookInList(Scr->AutoRaise,
tmp_win->full_name,
&tmp_win->class);
&tmp_win->classh);
if (tmp_win->auto_raise)
Scr->NumAutoRaises++;
if (LookInList(Scr->WindowRingL, tmp_win->full_name, &tmp_win->class)) {
if (LookInList(Scr->WindowRingL, tmp_win->full_name, &tmp_win->classh)) {
if (Scr->Ring) {
tmp_win->ring.next = Scr->Ring->ring.next;
if (Scr->Ring->ring.next->ring.prev)
@ -299,16 +299,16 @@ AddWindow(Window w)
tmp_win->title_height = Scr->TitleHeight + tmp_win->frame_bw;
if (Scr->NoTitlebar)
tmp_win->title_height = 0;
if (LookInList(Scr->MakeTitle, tmp_win->full_name, &tmp_win->class))
if (LookInList(Scr->MakeTitle, tmp_win->full_name, &tmp_win->classh))
tmp_win->title_height = Scr->TitleHeight + tmp_win->frame_bw;
if (LookInList(Scr->NoTitle, tmp_win->full_name, &tmp_win->class))
if (LookInList(Scr->NoTitle, tmp_win->full_name, &tmp_win->classh))
tmp_win->title_height = 0;
/* if it is a transient window, don't put a title on it */
if (tmp_win->transient && !Scr->DecorateTransients)
tmp_win->title_height = 0;
if (LookInList(Scr->StartIconified, tmp_win->full_name, &tmp_win->class))
if (LookInList(Scr->StartIconified, tmp_win->full_name, &tmp_win->classh))
{
if (!tmp_win->wmhints)
{
@ -438,21 +438,21 @@ AddWindow(Window w)
tmp_win->iconc.fore = Scr->IconC.fore;
tmp_win->iconc.back = Scr->IconC.back;
GetColorFromList(Scr->BorderColorL, tmp_win->full_name, &tmp_win->class,
GetColorFromList(Scr->BorderColorL, tmp_win->full_name, &tmp_win->classh,
&tmp_win->border);
GetColorFromList(Scr->IconBorderColorL, tmp_win->full_name, &tmp_win->class,
GetColorFromList(Scr->IconBorderColorL, tmp_win->full_name, &tmp_win->classh,
&tmp_win->icon_border);
GetColorFromList(Scr->BorderTileForegroundL, tmp_win->full_name,
&tmp_win->class, &tmp_win->border_tile.fore);
&tmp_win->classh, &tmp_win->border_tile.fore);
GetColorFromList(Scr->BorderTileBackgroundL, tmp_win->full_name,
&tmp_win->class, &tmp_win->border_tile.back);
GetColorFromList(Scr->TitleForegroundL, tmp_win->full_name, &tmp_win->class,
&tmp_win->classh, &tmp_win->border_tile.back);
GetColorFromList(Scr->TitleForegroundL, tmp_win->full_name, &tmp_win->classh,
&tmp_win->title.fore);
GetColorFromList(Scr->TitleBackgroundL, tmp_win->full_name, &tmp_win->class,
GetColorFromList(Scr->TitleBackgroundL, tmp_win->full_name, &tmp_win->classh,
&tmp_win->title.back);
GetColorFromList(Scr->IconForegroundL, tmp_win->full_name, &tmp_win->class,
GetColorFromList(Scr->IconForegroundL, tmp_win->full_name, &tmp_win->classh,
&tmp_win->iconc.fore);
GetColorFromList(Scr->IconBackgroundL, tmp_win->full_name, &tmp_win->class,
GetColorFromList(Scr->IconBackgroundL, tmp_win->full_name, &tmp_win->classh,
&tmp_win->iconc.back);

View File

@ -632,7 +632,7 @@ HandleKeyPress(void)
for (Tmp_win = Scr->TwmRoot.next; Tmp_win != NULL;
Tmp_win = Tmp_win->next)
{
if (!strncmp(key->win_name, Tmp_win->class.res_name, len))
if (!strncmp(key->win_name, Tmp_win->classh.res_name, len))
{
matched = TRUE;
ExecuteFunction(key->func, key->action, Tmp_win->frame,
@ -646,7 +646,7 @@ HandleKeyPress(void)
for (Tmp_win = Scr->TwmRoot.next; Tmp_win != NULL;
Tmp_win = Tmp_win->next)
{
if (!strncmp(key->win_name, Tmp_win->class.res_class, len))
if (!strncmp(key->win_name, Tmp_win->classh.res_class, len))
{
matched = TRUE;
ExecuteFunction(key->func, key->action, Tmp_win->frame,
@ -1183,8 +1183,8 @@ HandleDestroyNotify(void)
* 2. name
* 3. icon_name
* 4. wmhints
* 5. class.res_name
* 6. class.res_class
* 5. classh.res_name
* 6. classh.res_class
*
*
* 9. cwins
@ -1206,10 +1206,10 @@ HandleDestroyNotify(void)
free_window_names (Tmp_win, True, True, True); /* 1, 2, 3 */
if (Tmp_win->wmhints) /* 4 */
XFree (Tmp_win->wmhints);
if (Tmp_win->class.res_name && Tmp_win->class.res_name != NoName) /* 5 */
XFree (Tmp_win->class.res_name);
if (Tmp_win->class.res_class && Tmp_win->class.res_class != NoName) /* 6 */
XFree (Tmp_win->class.res_class);
if (Tmp_win->classh.res_name && Tmp_win->classh.res_name != NoName) /* 5 */
XFree (Tmp_win->classh.res_name);
if (Tmp_win->classh.res_class && Tmp_win->classh.res_class != NoName) /* 6 */
XFree (Tmp_win->classh.res_class);
free_cwins (Tmp_win); /* 9 */
if (Tmp_win->titlebuttons) /* 10 */
free (Tmp_win->titlebuttons);

3860
src/gram.c

File diff suppressed because it is too large Load Diff

View File

@ -1,68 +1,193 @@
#define LB 257
#define RB 258
#define LP 259
#define RP 260
#define MENUS 261
#define MENU 262
#define BUTTON 263
#define DEFAULT_FUNCTION 264
#define PLUS 265
#define MINUS 266
#define ALL 267
#define OR 268
#define CURSORS 269
#define ICONS 270
#define COLOR 271
#define SAVECOLOR 272
#define MONOCHROME 273
#define FUNCTION 274
#define WINDOW_FUNCTION 275
#define ZOOM 276
#define MAKE_TITLE 277
#define GRAYSCALE 278
#define NO_TITLE 279
#define AUTO_RAISE 280
#define ICON_REGION 281
#define META 282
#define SHIFT 283
#define LOCK 284
#define CONTROL 285
#define WINDOW 286
#define TITLE 287
#define ICON 288
#define ROOT 289
#define FRAME 290
#define COLON 291
#define EQUALS 292
#define START_ICONIFIED 293
#define MOVE 294
#define RESIZE 295
#define WAIT 296
#define SELECT 297
#define KILL 298
#define LEFT_TITLEBUTTON 299
#define RIGHT_TITLEBUTTON 300
#define NUMBER 301
#define KEYWORD 302
#define NKEYWORD 303
#define CKEYWORD 304
#define CLKEYWORD 305
#define FKEYWORD 306
#define FSKEYWORD 307
#define SKEYWORD 308
#define DKEYWORD 309
#define JKEYWORD 310
#define WINDOW_RING 311
#define WARP_CURSOR 312
#define ERRORTOKEN 313
#define NO_STACKMODE 314
#define STRING 315
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union
/* A Bison parser, made by GNU Bison 3.0.4. */
/* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
#ifndef YY_YY_GRAM_H_INCLUDED
# define YY_YY_GRAM_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int yydebug;
#endif
/* Token type. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
LB = 258,
RB = 259,
LP = 260,
RP = 261,
MENUS = 262,
MENU = 263,
BUTTON = 264,
DEFAULT_FUNCTION = 265,
PLUS = 266,
MINUS = 267,
ALL = 268,
OR = 269,
CURSORS = 270,
ICONS = 271,
COLOR = 272,
SAVECOLOR = 273,
MONOCHROME = 274,
FUNCTION = 275,
WINDOW_FUNCTION = 276,
ZOOM = 277,
MAKE_TITLE = 278,
GRAYSCALE = 279,
NO_TITLE = 280,
AUTO_RAISE = 281,
ICON_REGION = 282,
META = 283,
SHIFT = 284,
LOCK = 285,
CONTROL = 286,
WINDOW = 287,
TITLE = 288,
ICON = 289,
ROOT = 290,
FRAME = 291,
COLON = 292,
EQUALS = 293,
START_ICONIFIED = 294,
MOVE = 295,
RESIZE = 296,
WAIT = 297,
SELECT = 298,
KILL = 299,
LEFT_TITLEBUTTON = 300,
RIGHT_TITLEBUTTON = 301,
NUMBER = 302,
KEYWORD = 303,
NKEYWORD = 304,
CKEYWORD = 305,
CLKEYWORD = 306,
FKEYWORD = 307,
FSKEYWORD = 308,
SKEYWORD = 309,
DKEYWORD = 310,
JKEYWORD = 311,
WINDOW_RING = 312,
WARP_CURSOR = 313,
ERRORTOKEN = 314,
NO_STACKMODE = 315,
STRING = 316
};
#endif
/* Tokens. */
#define LB 258
#define RB 259
#define LP 260
#define RP 261
#define MENUS 262
#define MENU 263
#define BUTTON 264
#define DEFAULT_FUNCTION 265
#define PLUS 266
#define MINUS 267
#define ALL 268
#define OR 269
#define CURSORS 270
#define ICONS 271
#define COLOR 272
#define SAVECOLOR 273
#define MONOCHROME 274
#define FUNCTION 275
#define WINDOW_FUNCTION 276
#define ZOOM 277
#define MAKE_TITLE 278
#define GRAYSCALE 279
#define NO_TITLE 280
#define AUTO_RAISE 281
#define ICON_REGION 282
#define META 283
#define SHIFT 284
#define LOCK 285
#define CONTROL 286
#define WINDOW 287
#define TITLE 288
#define ICON 289
#define ROOT 290
#define FRAME 291
#define COLON 292
#define EQUALS 293
#define START_ICONIFIED 294
#define MOVE 295
#define RESIZE 296
#define WAIT 297
#define SELECT 298
#define KILL 299
#define LEFT_TITLEBUTTON 300
#define RIGHT_TITLEBUTTON 301
#define NUMBER 302
#define KEYWORD 303
#define NKEYWORD 304
#define CKEYWORD 305
#define CLKEYWORD 306
#define FKEYWORD 307
#define FSKEYWORD 308
#define SKEYWORD 309
#define DKEYWORD 310
#define JKEYWORD 311
#define WINDOW_RING 312
#define WARP_CURSOR 313
#define ERRORTOKEN 314
#define NO_STACKMODE 315
#define STRING 316
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
#line 106 "gram.y" /* yacc.c:1909 */
int num;
char *ptr;
} YYSTYPE;
#endif /* YYSTYPE_DEFINED */
#line 181 "gram.h" /* yacc.c:1909 */
};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
extern YYSTYPE yylval;
int yyparse (void);
#endif /* !YY_YY_GRAM_H_INCLUDED */

View File

@ -74,7 +74,6 @@ in this Software without prior written authorization from The Open Group.
#include "screen.h"
#include "parse.h"
#include "add_window.h"
#include "icons.h"
#include <X11/Xos.h>
#include <X11/Xmu/CharSet.h>
@ -142,8 +141,6 @@ stmt : error
| noarg
| sarg
| narg
| ICON_REGION string DKEYWORD DKEYWORD number number
{ AddIconRegion($2, $3, $4, $5, $6); }
| ZOOM number { if (Scr->FirstTime)
{
Scr->DoZoom = TRUE;

View File

@ -31,7 +31,9 @@ in this Software without prior written authorization from The Open Group.
*
**********************************************************************/
#include <algorithm>
#include <stdio.h>
#include <vector>
#include "twm.h"
#include "screen.h"
#include "icons.h"
@ -39,97 +41,75 @@ in this Software without prior written authorization from The Open Group.
#include "parse.h"
#include "util.h"
using namespace std;
// TODO: initialize at runtime. Per screen unless you simplify to only one screen allowed.
const int icon_area_x = 1600; // big enough area for my xclock to look like an icon, not be stacked on.
const int icon_pad = 10;
#define iconWidth(w) (BW2 + w->icon_w_width)
#define iconHeight(w) (BW2 + w->icon_w_height)
static void splitEntry ( IconEntry *ie, int grav1, int grav2, int w, int h );
static IconEntry * FindIconEntry ( TwmWindow *tmp_win, IconRegion **irp );
static IconEntry * prevIconEntry ( IconEntry *ie, IconRegion *ir );
static void mergeEntries ( IconEntry *old, IconEntry *ie );
static void
splitEntry (IconEntry *ie, int grav1, int grav2, int w, int h)
{
IconEntry *new;
switch (grav1) {
case D_NORTH:
case D_SOUTH:
if (w != ie->w)
splitEntry (ie, grav2, grav1, w, ie->h);
if (h != ie->h) {
new = malloc (sizeof (IconEntry));
new->twm_win = 0;
new->used = 0;
new->next = ie->next;
ie->next = new;
new->x = ie->x;
new->h = (ie->h - h);
new->w = ie->w;
ie->h = h;
if (grav1 == D_SOUTH) {
new->y = ie->y;
ie->y = new->y + new->h;
} else
new->y = ie->y + ie->h;
}
break;
case D_EAST:
case D_WEST:
if (h != ie->h)
splitEntry (ie, grav2, grav1, ie->w, h);
if (w != ie->w) {
new = malloc (sizeof (IconEntry));
new->twm_win = 0;
new->used = 0;
new->next = ie->next;
ie->next = new;
new->y = ie->y;
new->w = (ie->w - w);
new->h = ie->h;
ie->w = w;
if (grav1 == D_EAST) {
new->x = ie->x;
ie->x = new->x + new->w;
} else
new->x = ie->x + ie->w;
}
break;
}
}
static inline int
roundUp (int v, int multiple)
{
return ((v + multiple - 1) / multiple) * multiple;
}
struct Span {
int p1, p2;
};
inline bool operator<(Span a, Span b)
{
return a.p1 == b.p1 && a.p2 < b.p2 || a.p1 < b.p1;
}
static void
PlaceIcon(TwmWindow *tmp_win, int def_x, int def_y, int *final_x, int *final_y)
{
IconRegion *ir;
IconEntry *ie;
int w = 0, h = 0;
// Try to place in a gap on the right side.
ie = 0;
for (ir = Scr->FirstRegion; ir; ir = ir->next) {
w = roundUp (iconWidth (tmp_win), ir->stepx);
h = roundUp (iconHeight (tmp_win), ir->stepy);
for (ie = ir->entries; ie; ie=ie->next) {
if (ie->used)
continue;
if (ie->w >= w && ie->h >= h)
break;
Window root, parent;
Window* children;
unsigned int nchildren;
XWindowAttributes attr;
int y = 0;
if (XQueryTree(dpy, Scr->Root, &root, &parent, &children, &nchildren)) {
XArray<Window> childarray(children, nchildren);
vector<Span> occupied;
for (Window w : childarray) {
if (XGetWindowAttributes(dpy, w, &attr)) {
// w looks like icon?
if (attr.map_state != IsUnmapped
&& attr.height <= 200 && attr.width <= 200
&& attr.x >= icon_area_x) {
occupied.push_back({attr.y, attr.y + attr.height});
}
}
}
int h = 64;
if (tmp_win->icon_height) {
h = tmp_win->icon_height;
}
sort(occupied.begin(), occupied.end());
int prev = 0;
for (auto span : occupied) {
if (span.p1 - prev >= h) {
if (span.p1 - prev >= h + 2*icon_pad)
y = prev + icon_pad;
else
y = prev;
break;
}
prev = span.p2;
}
if (ie)
break;
}
if (ie) {
splitEntry (ie, ir->grav1, ir->grav2, w, h);
ie->used = 1;
ie->twm_win = tmp_win;
*final_x = ie->x + (ie->w - iconWidth (tmp_win)) / 2;
*final_y = ie->y + (ie->h - iconHeight (tmp_win)) / 2;
if (y) {
*final_x = icon_area_x + 20; // TODO: stick the icon roughly in the center of the space.
*final_y = y;
} else {
*final_x = def_x;
*final_y = def_y;
@ -137,201 +117,16 @@ PlaceIcon(TwmWindow *tmp_win, int def_x, int def_y, int *final_x, int *final_y)
return;
}
static IconEntry *
FindIconEntry (TwmWindow *tmp_win, IconRegion **irp)
{
IconRegion *ir;
IconEntry *ie;
for (ir = Scr->FirstRegion; ir; ir = ir->next) {
for (ie = ir->entries; ie; ie=ie->next)
if (ie->twm_win == tmp_win) {
if (irp)
*irp = ir;
return ie;
}
}
return 0;
}
void
IconUp (TwmWindow *tmp_win)
{
int x, y;
int defx, defy;
struct IconRegion *ir;
/*
* If the client specified a particular location, let's use it (this might
* want to be an option at some point). Otherwise, try to fit within the
* icon region.
*/
if (tmp_win->wmhints && (tmp_win->wmhints->flags & IconPositionHint))
return;
if (tmp_win->icon_moved) {
if (!XGetGeometry (dpy, tmp_win->icon_w, &JunkRoot, &defx, &defy,
&JunkWidth, &JunkHeight, &JunkBW, &JunkDepth))
return;
x = defx + ((int) JunkWidth) / 2;
y = defy + ((int) JunkHeight) / 2;
for (ir = Scr->FirstRegion; ir; ir = ir->next) {
if (x >= ir->x && x < (ir->x + ir->w) &&
y >= ir->y && y < (ir->y + ir->h))
break;
}
if (!ir) return; /* outside icon regions, leave alone */
}
defx = -100;
defy = -100;
PlaceIcon(tmp_win, defx, defy, &x, &y);
if (x != defx || y != defy) {
XMoveWindow (dpy, tmp_win->icon_w, x, y);
tmp_win->icon_moved = FALSE; /* since we've restored it */
}
}
static IconEntry *
prevIconEntry (IconEntry *ie, IconRegion *ir)
{
IconEntry *ip;
if (ie == ir->entries)
return 0;
for (ip = ir->entries; ip->next != ie; ip=ip->next)
;
return ip;
}
/**
* old is being freed; and is adjacent to ie. Merge
* regions together
*/
static void
mergeEntries (IconEntry *old, IconEntry *ie)
{
if (old->y == ie->y) {
ie->w = old->w + ie->w;
if (old->x < ie->x)
ie->x = old->x;
} else {
ie->h = old->h + ie->h;
if (old->y < ie->y)
ie->y = old->y;
}
}
void
IconDown (TwmWindow *tmp_win)
{
IconEntry *ie, *ip, *in;
IconRegion *ir;
ie = FindIconEntry (tmp_win, &ir);
if (ie) {
ie->twm_win = 0;
ie->used = 0;
ip = prevIconEntry (ie, ir);
in = ie->next;
for (;;) {
if (ip && ip->used == 0 &&
((ip->x == ie->x && ip->w == ie->w) ||
(ip->y == ie->y && ip->h == ie->h)))
{
ip->next = ie->next;
mergeEntries (ie, ip);
free (ie);
ie = ip;
ip = prevIconEntry (ip, ir);
} else if (in && in->used == 0 &&
((in->x == ie->x && in->w == ie->w) ||
(in->y == ie->y && in->h == ie->h)))
{
ie->next = in->next;
mergeEntries (in, ie);
free (in);
in = ie->next;
} else
break;
}
}
}
void
AddIconRegion(char *geom, int grav1, int grav2, int stepx, int stepy)
{
IconRegion *ir;
int mask;
ir = malloc(sizeof(IconRegion));
ir->next = NULL;
if (Scr->LastRegion)
Scr->LastRegion->next = ir;
Scr->LastRegion = ir;
if (!Scr->FirstRegion)
Scr->FirstRegion = ir;
ir->entries = NULL;
ir->grav1 = grav1;
ir->grav2 = grav2;
if (stepx <= 0)
stepx = 1;
if (stepy <= 0)
stepy = 1;
ir->stepx = stepx;
ir->stepy = stepy;
ir->x = ir->y = ir->w = ir->h = 0;
mask = XParseGeometry(geom, &ir->x, &ir->y, (unsigned int *)&ir->w, (unsigned int *)&ir->h);
if (mask & XNegative)
ir->x += Scr->MyDisplayWidth - ir->w;
if (mask & YNegative)
ir->y += Scr->MyDisplayHeight - ir->h;
ir->entries = malloc(sizeof(IconEntry));
ir->entries->next = 0;
ir->entries->x = ir->x;
ir->entries->y = ir->y;
ir->entries->w = ir->w;
ir->entries->h = ir->h;
ir->entries->twm_win = 0;
ir->entries->used = 0;
}
#ifdef comment
void
FreeIconEntries (IconRegion *ir)
{
IconEntry *ie, *tmp;
for (ie = ir->entries; ie; ie=tmp)
{
tmp = ie->next;
free (ie);
}
}
void
FreeIconRegions(void)
{
IconRegion *ir, *tmp;
for (ir = Scr->FirstRegion; ir != NULL;)
{
tmp = ir;
FreeIconEntries (ir);
ir = ir->next;
free(tmp);
}
Scr->FirstRegion = NULL;
Scr->LastRegion = NULL;
}
#endif
void
CreateIconWindow(TwmWindow *tmp_win, int def_x, int def_y)
{
@ -360,7 +155,7 @@ CreateIconWindow(TwmWindow *tmp_win, int def_x, int def_y)
icon_name = LookInNameList(Scr->IconNames, tmp_win->full_name);
if (icon_name == NULL)
icon_name = LookInList(Scr->IconNames, tmp_win->full_name,
&tmp_win->class);
&tmp_win->classh);
bm = None;
if (icon_name != NULL)
@ -420,7 +215,7 @@ CreateIconWindow(TwmWindow *tmp_win, int def_x, int def_y)
icon_name = LookInNameList(Scr->IconNames, tmp_win->full_name);
if (icon_name == NULL)
icon_name = LookInList(Scr->IconNames, tmp_win->full_name,
&tmp_win->class);
&tmp_win->classh);
bm = None;
if (icon_name != NULL)

View File

@ -34,27 +34,14 @@ in this Software without prior written authorization from The Open Group.
#ifndef ICONS_H
#define ICONS_H
typedef struct IconRegion
{
struct IconRegion *next;
int x, y, w, h;
int grav1, grav2;
int stepx, stepy; /* allocation granularity */
struct IconEntry *entries;
} IconRegion;
#ifdef __cplusplus
#define EXTERN extern "C"
#else
#define EXTERN extern
#endif
typedef struct IconEntry
{
struct IconEntry *next;
int x, y, w, h;
TwmWindow *twm_win;
short used;
}IconEntry;
extern void IconUp ( TwmWindow *tmp_win );
extern void IconDown ( TwmWindow *tmp_win );
extern void AddIconRegion ( char *geom, int grav1, int grav2,
int stepx, int stepy );
extern void CreateIconWindow ( TwmWindow *tmp_win, int def_x, int def_y );
EXTERN void IconUp ( TwmWindow *tmp_win );
EXTERN void IconDown ( TwmWindow *tmp_win );
EXTERN void CreateIconWindow ( TwmWindow *tmp_win, int def_x, int def_y );
#endif /* ICONS_H */

View File

@ -117,7 +117,7 @@ AddToList(name_list **list_head, char *name, char *ptr)
* \param class a pointer to the class to look for
*/
char *
LookInList(name_list *list_head, char *name, XClassHint *class)
LookInList(name_list *list_head, char *name, XClassHint *classh)
{
name_list *nptr;
@ -126,16 +126,16 @@ LookInList(name_list *list_head, char *name, XClassHint *class)
if (strcmp(name, nptr->name) == 0)
return (nptr->ptr);
if (class)
if (classh)
{
/* look for the res_name next */
for (nptr = list_head; nptr != NULL; nptr = nptr->next)
if (strcmp(class->res_name, nptr->name) == 0)
if (strcmp(classh->res_name, nptr->name) == 0)
return (nptr->ptr);
/* finally look for the res_class */
for (nptr = list_head; nptr != NULL; nptr = nptr->next)
if (strcmp(class->res_class, nptr->name) == 0)
if (strcmp(classh->res_class, nptr->name) == 0)
return (nptr->ptr);
}
return (NULL);
@ -155,10 +155,10 @@ LookInNameList(name_list *list_head, char *name)
*
* \param list a pointer to the head of a list
* \param name a pointer to the name to look for
* \param class a pointer to the class to look for
* \param classh a pointer to the class to look for
* \param[out] ptr fill in the list value if the name was found
*/
int GetColorFromList(name_list *list_head, char *name, XClassHint *class,
int GetColorFromList(name_list *list_head, char *name, XClassHint *classh,
Pixel *ptr)
{
int save;
@ -174,10 +174,10 @@ int GetColorFromList(name_list *list_head, char *name, XClassHint *class,
return (TRUE);
}
if (class)
if (classh)
{
for (nptr = list_head; nptr != NULL; nptr = nptr->next)
if (strcmp(class->res_name, nptr->name) == 0)
if (strcmp(classh->res_name, nptr->name) == 0)
{
save = Scr->FirstTime;
Scr->FirstTime = TRUE;
@ -187,7 +187,7 @@ int GetColorFromList(name_list *list_head, char *name, XClassHint *class,
}
for (nptr = list_head; nptr != NULL; nptr = nptr->next)
if (strcmp(class->res_class, nptr->name) == 0)
if (strcmp(classh->res_class, nptr->name) == 0)
{
save = Scr->FirstTime;
Scr->FirstTime = TRUE;

View File

@ -65,16 +65,23 @@ in this Software without prior written authorization from The Open Group.
#include <X11/Xutil.h>
#include <X11/Intrinsic.h>
#ifdef __cplusplus
#define EXTERN extern "C"
#else
#define EXTERN extern
#endif
typedef struct name_list_struct name_list;
extern void AddToList ( name_list **list_head, char *name, char *ptr );
extern void FreeList ( name_list **list );
EXTERN void AddToList ( name_list **list_head, char *name, char *ptr );
EXTERN void FreeList ( name_list **list );
extern int GetColorFromList ( name_list *list_head, char *name,
XClassHint *class, Pixel *ptr );
extern char * LookInList ( name_list *list_head, char *name,
XClassHint *class );
extern char * LookInNameList ( name_list *list_head, char *name );
EXTERN int GetColorFromList ( name_list *list_head, char *name,
XClassHint *classh, Pixel *ptr );
EXTERN char * LookInList ( name_list *list_head, char *name,
XClassHint *classh );
EXTERN char * LookInNameList ( name_list *list_head, char *name );
#endif /* _LIST_ */

View File

@ -2018,12 +2018,12 @@ ExecuteFunction(int func, const char *action, Window w, TwmWindow *tmp_win,
}
if (!t) {
for (t = Scr->TwmRoot.next; t != NULL; t = t->next) {
if (!strncmp(action, t->class.res_name, len))
if (!strncmp(action, t->classh.res_name, len))
if (WarpThere(t)) break;
}
if (!t) {
for (t = Scr->TwmRoot.next; t != NULL; t = t->next) {
if (!strncmp(action, t->class.res_class, len))
if (!strncmp(action, t->classh.res_class, len))
if (WarpThere(t)) break;
}
}
@ -2313,7 +2313,7 @@ DeIconify(TwmWindow *tmp_win)
IconDown (tmp_win);
}
if ((Scr->WarpCursor ||
LookInList(Scr->WarpCursorL, tmp_win->full_name, &tmp_win->class)) &&
LookInList(Scr->WarpCursorL, tmp_win->full_name, &tmp_win->classh)) &&
tmp_win->icon)
WarpToWindow (tmp_win);
tmp_win->icon = FALSE;
@ -2451,9 +2451,9 @@ Identify (TwmWindow *t)
snprintf(Info[n++], INFO_SIZE,
"Name = \"%s\"", t->full_name);
snprintf(Info[n++], INFO_SIZE,
"Class.res_name = \"%s\"", t->class.res_name);
"Class.res_name = \"%s\"", t->classh.res_name);
snprintf(Info[n++], INFO_SIZE,
"Class.res_class = \"%s\"", t->class.res_class);
"Class.res_class = \"%s\"", t->classh.res_class);
Info[n++][0] = '\0';
snprintf(Info[n++], INFO_SIZE,
"Geometry/root = %dx%d+%d+%d", wwidth, wheight, x, y);

View File

@ -57,7 +57,7 @@ typedef struct _TitlebarPixmaps {
Pixmap resize;
Pixmap question;
Pixmap menu;
Pixmap delete;
Pixmap del;
} TitlebarPixmaps;
typedef struct ScreenInfo
@ -177,8 +177,6 @@ typedef struct ScreenInfo
MyFont IconFont; /* icon font structure */
MyFont SizeFont; /* resize font structure */
MyFont DefaultFont;
struct IconRegion *FirstRegion; /* pointer to icon regions */
struct IconRegion *LastRegion; /* pointer to the last icon region */
const char *IconDirectory; /* icon directory to search */
int SizeStringOffset; /* x offset in size window for drawing */
int SizeStringWidth; /* minimum width of size window */

View File

@ -303,9 +303,9 @@ WriteWinConfigEntry (FILE *configFile, TwmWindow *theWindow,
if (!windowRole)
{
if (!write_counted_string (configFile, theWindow->class.res_name))
if (!write_counted_string (configFile, theWindow->classh.res_name))
return 0;
if (!write_counted_string (configFile, theWindow->class.res_class))
if (!write_counted_string (configFile, theWindow->classh.res_class))
return 0;
if (theWindow->nameChanged)
{
@ -397,8 +397,8 @@ ReadWinConfigEntry (FILE *configFile, unsigned short version,
entry->tag = 0;
entry->client_id = NULL;
entry->window_role = NULL;
entry->class.res_name = NULL;
entry->class.res_class = NULL;
entry->classh.res_name = NULL;
entry->classh.res_class = NULL;
entry->wm_name = NULL;
entry->wm_command = NULL;
entry->wm_command_count = 0;
@ -411,9 +411,9 @@ ReadWinConfigEntry (FILE *configFile, unsigned short version,
if (!entry->window_role)
{
if (!read_counted_string (configFile, &entry->class.res_name))
if (!read_counted_string (configFile, &entry->classh.res_name))
goto give_up;
if (!read_counted_string (configFile, &entry->class.res_class))
if (!read_counted_string (configFile, &entry->classh.res_class))
goto give_up;
if (!read_counted_string (configFile, &entry->wm_name))
goto give_up;
@ -487,10 +487,10 @@ give_up:
free (entry->client_id);
if (entry->window_role)
free (entry->window_role);
if (entry->class.res_name)
free (entry->class.res_name);
if (entry->class.res_class)
free (entry->class.res_class);
if (entry->classh.res_name)
free (entry->classh.res_name);
if (entry->classh.res_class)
free (entry->classh.res_class);
if (entry->wm_name)
free (entry->wm_name);
if (entry->wm_command_count && entry->wm_command)
@ -597,10 +597,10 @@ GetWindowConfig (
* changed in the previous session.
*/
if (strcmp(theWindow->class.res_name,
ptr->class.res_name) == 0 &&
strcmp(theWindow->class.res_class,
ptr->class.res_class) == 0 &&
if (strcmp(theWindow->classh.res_name,
ptr->classh.res_name) == 0 &&
strcmp(theWindow->classh.res_class,
ptr->classh.res_class) == 0 &&
(ptr->wm_name == NULL ||
strcmp(theWindow->name, ptr->wm_name) == 0))
{

View File

@ -522,7 +522,7 @@ main(int argc, char *argv[])
Scr->tbpm.resize = None;
Scr->tbpm.question = None;
Scr->tbpm.menu = None;
Scr->tbpm.delete = None;
Scr->tbpm.del = None;
InitVariables();
InitMenus();
@ -720,8 +720,6 @@ InitVariables(void)
Scr->ZoomCount = 8;
Scr->Shadow = TRUE;
Scr->InterpolateMenuColors = FALSE;
Scr->FirstRegion = NULL;
Scr->LastRegion = NULL;
Scr->FirstTime = TRUE;
Scr->HaveFonts = FALSE; /* i.e. not loaded yet */
Scr->CaseSensitive = TRUE;

View File

@ -247,7 +247,7 @@ typedef struct TwmWindow
XSizeHints hints; /* normal hints */
XWMHints *wmhints; /* WM hints */
Window group; /* group ID */
XClassHint class;
XClassHint classh;
/***********************************************************************
* color definitions per window
**********************************************************************/
@ -299,7 +299,7 @@ typedef struct TWMWinConfigEntry
int tag;
char *client_id;
char *window_role;
XClassHint class;
XClassHint classh;
char *wm_name;
int wm_command_count;
char **wm_command;

View File

@ -879,11 +879,11 @@ CreateDotPixmap (unsigned *widthp, unsigned *heightp)
if (!(h & 1))
h--;
*widthp = *heightp = (unsigned int) h;
if (Scr->tbpm.delete == None) {
if (Scr->tbpm.del == None) {
GC gc;
Pixmap pix;
pix = Scr->tbpm.delete = XCreatePixmap (dpy, Scr->Root, h, h, 1);
pix = Scr->tbpm.del = XCreatePixmap (dpy, Scr->Root, h, h, 1);
gc = XCreateGC (dpy, pix, 0L, NULL);
XSetLineAttributes (dpy, gc, h, LineSolid, CapRound, JoinRound);
XSetForeground (dpy, gc, 0L);
@ -892,7 +892,7 @@ CreateDotPixmap (unsigned *widthp, unsigned *heightp)
XDrawLine (dpy, pix, gc, h/2, h/2, h/2, h/2);
XFreeGC (dpy, gc);
}
return Scr->tbpm.delete;
return Scr->tbpm.del;
}
#define questionmark_width 8

View File

@ -61,35 +61,41 @@ in this Software without prior written authorization from The Open Group.
#ifndef _UTIL_
#define _UTIL_
extern void MoveOutline ( Window root, int x, int y, int width, int height,
#ifdef __cplusplus
#define EXTERN extern "C"
#else
#define EXTERN extern
#endif
EXTERN void MoveOutline ( Window root, int x, int y, int width, int height,
int bw, int th );
extern void Zoom ( Window wf, Window wt );
extern const char * ExpandFilename ( const char *name );
extern void GetUnknownIcon ( const char *name );
extern Pixmap FindBitmap ( const char *name, unsigned int *widthp,
EXTERN void Zoom ( Window wf, Window wt );
EXTERN const char * ExpandFilename ( const char *name );
EXTERN void GetUnknownIcon ( const char *name );
EXTERN Pixmap FindBitmap ( const char *name, unsigned int *widthp,
unsigned int *heightp );
extern Pixmap GetBitmap ( const char *name );
extern void InsertRGBColormap ( Atom a, XStandardColormap *maps, int nmaps,
EXTERN Pixmap GetBitmap ( const char *name );
EXTERN void InsertRGBColormap ( Atom a, XStandardColormap *maps, int nmaps,
Bool replace );
extern void RemoveRGBColormap ( Atom a );
extern void LocateStandardColormaps ( void );
extern void GetColor ( int kind, Pixel *what, const char *name );
extern void GetColorValue ( int kind, XColor *what, const char *name );
extern void GetFont ( MyFont *font );
extern int MyFont_TextWidth( MyFont *font, const char *string, int len);
extern void MyFont_DrawImageString( Display *dpy, Drawable d, MyFont *font,
EXTERN void RemoveRGBColormap ( Atom a );
EXTERN void LocateStandardColormaps ( void );
EXTERN void GetColor ( int kind, Pixel *what, const char *name );
EXTERN void GetColorValue ( int kind, XColor *what, const char *name );
EXTERN void GetFont ( MyFont *font );
EXTERN int MyFont_TextWidth( MyFont *font, const char *string, int len);
EXTERN void MyFont_DrawImageString( Display *dpy, Drawable d, MyFont *font,
GC gc, int x, int y, const char * string,
int len);
extern void MyFont_DrawString( Display *dpy, Drawable d, MyFont *font, GC gc,
EXTERN void MyFont_DrawString( Display *dpy, Drawable d, MyFont *font, GC gc,
int x, int y, const char * string, int len);
extern void MyFont_ChangeGC( unsigned long fix_fore, unsigned long fix_back,
EXTERN void MyFont_ChangeGC( unsigned long fix_fore, unsigned long fix_back,
MyFont *fix_font);
extern Status I18N_FetchName( Display *dpy, Window win, char **winname);
extern Status I18N_GetIconName( Display *dpy, Window win, char **iconname);
extern void SetFocus ( TwmWindow *tmp_win, Time time );
extern void Bell ( int type, int percent, Window win );
EXTERN Status I18N_FetchName( Display *dpy, Window win, char **winname);
EXTERN Status I18N_GetIconName( Display *dpy, Window win, char **iconname);
EXTERN void SetFocus ( TwmWindow *tmp_win, Time time );
EXTERN void Bell ( int type, int percent, Window win );
extern int HotX, HotY;
EXTERN int HotX, HotY;
#define WM_BELL 0
#define MINOR_ERROR_BELL 1
@ -109,4 +115,31 @@ extern int HotX, HotY;
#define XkbBI_MajorError 2
#endif
#ifdef __cplusplus
template<typename T>
class XArray
{
T *array;
int sz;
public:
XArray(T * a, int s) : array{a}, sz{s}
{
}
T* begin() const
{
return array;
}
T* end() const
{
return array+sz;
}
~XArray()
{
XFree(array);
}
};
#endif
#endif /* _UTIL_ */

View File

@ -49,5 +49,5 @@ in this Software without prior written authorization from The Open Group.
/** OR PERFORMANCE OF THIS SOFTWARE. **/
/*****************************************************************************/
const char *Version = XVENDORNAME", "XORG_RELEASE;
const char *Version = "0.1";