aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--INSTALL327
-rw-r--r--config.h.in133
-rw-r--r--configure.ac (renamed from configure.in)0
-rw-r--r--dw/fltkviewbase.cc8
-rw-r--r--dw/hyphenator.cc7
-rw-r--r--dw/textblock_linebreaking.cc37
-rw-r--r--src/dns.c2
-rw-r--r--src/menu.cc13
-rw-r--r--src/tipwin.cc19
-rw-r--r--src/uicmd.cc6
-rw-r--r--test/table-narrow.html9
11 files changed, 334 insertions, 227 deletions
diff --git a/INSTALL b/INSTALL
index 3b50ea95..7d1c323b 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,48 +1,80 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+ Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved. This file is offered as-is,
+without warranty of any kind.
+
Basic Installation
==================
- These are generic installation instructions.
+ Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package. Some packages provide this
+`INSTALL' file but do not implement all of the features documented
+below. The lack of an optional feature in a given package is not
+necessarily a bug. More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
- The file `configure.in' is used to create `configure' by a program
-called `autoconf'. You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
-The simplest way to compile this package is:
+ The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
+ `./configure' to configure the package for your system.
- Running `configure' takes a while. While running, it prints some
- messages telling which features it is checking for.
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
- the package.
+ the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
+ documentation. When installing into a prefix owned by root, it is
+ recommended that the package be configured and built as a regular
+ user, and only the `make install' phase executed with root
+ privileges.
+
+ 5. Optionally, type `make installcheck' to repeat any self-tests, but
+ this time using the binaries in their final installed location.
+ This target does not install anything. Running this target as a
+ regular user, particularly if the prior `make install' required
+ root privileges, verifies that the installation completed
+ correctly.
+
+ 6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
@@ -51,57 +83,119 @@ The simplest way to compile this package is:
all sorts of other programs in order to regenerate files that came
with the distribution.
+ 7. Often, you can also type `make uninstall' to remove the installed
+ files again. In practice, not all packages have tested that
+ uninstallation works correctly, even though it is required by the
+ GNU Coding Standards.
+
+ 8. Some packages, particularly those that use Automake, provide `make
+ distcheck', which can by used by developers to test that all other
+ targets like `make install' and `make uninstall' work correctly.
+ This target is generally not run by end users.
+
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. You can give `configure'
-initial values for variables by setting them in the environment. Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
- CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
-Or on systems that have the `env' program, you can do it like this:
- env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
+own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
+source code in the directory that `configure' is in and in `..'. This
+is known as a "VPATH" build.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+ On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor. Like
+this:
- If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory. After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+ CPP="gcc -E" CXXCPP="g++ -E"
+
+ This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
Installation Names
==================
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
+ By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX', where PREFIX must be an
+absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them. In general, the
+default for these options is expressed in terms of `${prefix}', so that
+specifying just `--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+ The most portable way to affect installation locations is to pass the
+correct locations to `configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+`make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+ The first method involves providing an override variable for each
+affected directory. For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+`${prefix}'. Any directories that were specified during `configure',
+but not in terms of `${prefix}', must each be overridden at install
+time for the entire installation to be relocated. The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+ The second method involves providing the `DESTDIR' variable. For
+example, `make install DESTDIR=/alternate/directory' will prepend
+`/alternate/directory' before all installation names. The approach of
+`DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters. On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of `${prefix}'
+at `configure' time.
+
+Optional Features
+=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-Optional Features
-=================
-
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
@@ -114,25 +208,75 @@ find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
+ Some packages offer the ability to configure how verbose the
+execution of `make' will be. For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with `make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with `make V=0'.
+
+Particular systems
+==================
+
+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file. The option `-nodtk' can be used as
+a workaround. If GNU CC is not installed, it is therefore recommended
+to try
+
+ ./configure CC="cc"
+
+and if that doesn't work, try
+
+ ./configure CC="cc -nodtk"
+
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
Specifying the System Type
==========================
- There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on. Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
CPU-COMPANY-SYSTEM
-See the file `config.sub' for the possible values of each field. If
+where SYSTEM can have one of these forms:
+
+ OS
+ KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
+need to know the machine type.
- If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
Sharing Defaults
================
@@ -145,32 +289,77 @@ default values for variables like `CC', `cache_file', and `prefix'.
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
-Operation Controls
+Defining Variables
==================
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
`configure' recognizes the following options to control how it
operates.
+`--help'
+`-h'
+ Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+ Print a summary of the options unique to this package's
+ `configure', and exit. The `short' variant lists options used
+ only in the top level, while the `recursive' variant lists options
+ also present in any nested packages.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
`--cache-file=FILE'
- Use and save the results of the tests in FILE instead of
- `./config.cache'. Set FILE to `/dev/null' to disable caching, for
- debugging `configure'.
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
-`--help'
- Print a summary of the options to `configure', and exit.
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
- Do not print messages saying which checks are being made.
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
-`--version'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
+`--prefix=DIR'
+ Use DIR as the installation prefix. *note Installation Names::
+ for more details, including other options available for fine-tuning
+ the installation locations.
+
+`--no-create'
+`-n'
+ Run the configure checks, but stop before creating any output
+ files.
-`configure' also accepts some other, not widely useful, options.
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
diff --git a/config.h.in b/config.h.in
deleted file mode 100644
index 371d658f..00000000
--- a/config.h.in
+++ /dev/null
@@ -1,133 +0,0 @@
-/* config.h.in. Generated from configure.in by autoheader. */
-
-/* Enable GIF images */
-#undef ENABLE_GIF
-
-/* Enable JPEG images */
-#undef ENABLE_JPEG
-
-/* Enable PNG images */
-#undef ENABLE_PNG
-
-/* Enable SSL support */
-#undef ENABLE_SSL
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `gethostbyname' function. */
-#undef HAVE_GETHOSTBYNAME
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-#undef HAVE_LIBNSL
-
-/* Define to 1 if you have the <libpng/png.h> header file. */
-#undef HAVE_LIBPNG_PNG_H
-
-/* Define to 1 if you have the `socket' library (-lsocket). */
-#undef HAVE_LIBSOCKET
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the <png.h> header file. */
-#undef HAVE_PNG_H
-
-/* Define to 1 if you have the `setsockopt' function. */
-#undef HAVE_SETSOCKOPT
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#undef HAVE_SYS_UIO_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* The size of `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
-/* The size of `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
-/* The size of `void *', as computed by sizeof. */
-#undef SIZEOF_VOID_P
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Version number of package */
-#undef VERSION
-
-/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
- <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
- #define below would cause a syntax error. */
-#undef _UINT32_T
-
-/* Use char pointers for newer libiconv */
-#undef inbuf_t
-
-/* Define to the type of a signed integer type of width exactly 16 bits if
- such a type exists and the standard includes do not define it. */
-#undef int16_t
-
-/* Define to the type of a signed integer type of width exactly 32 bits if
- such a type exists and the standard includes do not define it. */
-#undef int32_t
-
-/* Define the real type of socklen_t */
-#undef socklen_t
-
-/* Define to the type of an unsigned integer type of width exactly 16 bits if
- such a type exists and the standard includes do not define it. */
-#undef uint16_t
-
-/* Define to the type of an unsigned integer type of width exactly 32 bits if
- such a type exists and the standard includes do not define it. */
-#undef uint32_t
diff --git a/configure.in b/configure.ac
index 5b7cf273..5b7cf273 100644
--- a/configure.in
+++ b/configure.ac
diff --git a/dw/fltkviewbase.cc b/dw/fltkviewbase.cc
index 0977aac5..feab0ad7 100644
--- a/dw/fltkviewbase.cc
+++ b/dw/fltkviewbase.cc
@@ -295,6 +295,14 @@ int FltkViewBase::handle (int event)
case FL_UNFOCUS:
focused_child = fl_oldfocus;
return 0;
+ case FL_KEYBOARD:
+ if (Fl::event_key() == FL_Tab && this == Fl::focus()) {
+ for (int i = 0; i < children(); i++) {
+ if (child(i)->take_focus())
+ return 1;
+ }
+ }
+ break;
default:
break;
}
diff --git a/dw/hyphenator.cc b/dw/hyphenator.cc
index c2b9755e..af10587c 100644
--- a/dw/hyphenator.cc
+++ b/dw/hyphenator.cc
@@ -317,13 +317,12 @@ void Hyphenator::hyphenateSingleWord(core::Platform *platform,
// No hyphens in the first two chars or the last two.
// Characters are not bytes, so UTF-8 characters must be counted.
+ int len = strlen (wordLc);
const char *bytesStart = nextUtf8Char (nextUtf8Char (wordLc));
- // TODO Check bytesStart == NULL;
- int numBytesStart = bytesStart - wordLc;
+ int numBytesStart = bytesStart ? bytesStart - wordLc : len;
for (int i = 0; i < numBytesStart; i++)
points.set (i + 1, 0);
-
- int len = strlen (wordLc);
+
int numBytes1End = platform->prevGlyph (wordLc, len);
int numBytes2End = platform->prevGlyph (wordLc, numBytes1End);
for (int i = 0; i < len - numBytes2End; i++)
diff --git a/dw/textblock_linebreaking.cc b/dw/textblock_linebreaking.cc
index aa7ce664..62526500 100644
--- a/dw/textblock_linebreaking.cc
+++ b/dw/textblock_linebreaking.cc
@@ -476,6 +476,10 @@ void Textblock::wordWrap (int wordIndex, bool wrapAll)
accumulateWordData (wordIndex);
+ //printf (" ");
+ //printWord (word);
+ //printf ("\n");
+
if (word->content.type == core::Content::WIDGET_OOF_REF) {
int top;
if (lines->size() == 0)
@@ -520,17 +524,23 @@ void Textblock::wordWrap (int wordIndex, bool wrapAll)
newLine = true;
searchUntil = wordIndex;
PRINTF (" NEW LINE: forced break\n");
- } else if (wordIndex > firstIndex &&
- word->badnessAndPenalty.lineTooTight () &&
- words->getRef(wordIndex - 1)
- ->badnessAndPenalty.lineCanBeBroken (penaltyIndex)) {
- // TODO Comment the last condition (also below where the minimum is
- // searched for)
- newLine = true;
- searchUntil = wordIndex - 1;
- PRINTF (" NEW LINE: line too tight\n");
- } else
- newLine = false;
+ } else {
+ // Break the line when too tight, but only when there is a
+ // possible break point so far. (TODO: I've forgotten the
+ // original bug which is fixed by this.)
+ bool possibleLineBreak = false;
+ for (int i = firstIndex; !possibleLineBreak && i <= wordIndex - 1; i++)
+ if (words->getRef(i)->badnessAndPenalty
+ .lineCanBeBroken (penaltyIndex))
+ possibleLineBreak = true;
+
+ if (possibleLineBreak && word->badnessAndPenalty.lineTooTight ()) {
+ newLine = true;
+ searchUntil = wordIndex - 1;
+ PRINTF (" NEW LINE: line too tight\n");
+ } else
+ newLine = false;
+ }
if(!newLine && !wrapAll)
// No new line is added. "mustQueueResize" must,
@@ -561,9 +571,6 @@ void Textblock::wordWrap (int wordIndex, bool wrapAll)
//printWord (w);
//printf ("\n");
- // TODO: is this condition needed:
- // if(w->badnessAndPenalty.lineCanBeBroken ()) ?
-
if (breakPos == -1 ||
w->badnessAndPenalty.compareTo
(penaltyIndex,
@@ -640,7 +647,7 @@ void Textblock::wordWrap (int wordIndex, bool wrapAll)
PRINTF ("[%p] old searchUntil = %d ...\n", this, searchUntil);
int n = hyphenateWord (hyphenatedWord);
searchUntil += n;
- if (hyphenatedWord >= wordIndex)
+ if (hyphenatedWord <= wordIndex)
wordIndexEnd += n;
PRINTF ("[%p] -> new searchUntil = %d ...\n", this, searchUntil);
lineAdded = false;
diff --git a/src/dns.c b/src/dns.c
index c24838e3..7ae19fe4 100644
--- a/src/dns.c
+++ b/src/dns.c
@@ -527,8 +527,10 @@ void a_Dns_dillohost_to_string(DilloHost *host, char *dst, size_t size)
switch (errno) {
case EAFNOSUPPORT:
snprintf(dst, size, "Unknown address family");
+ break;
case ENOSPC:
snprintf(dst, size, "Buffer too small");
+ break;
}
}
}
diff --git a/src/menu.cc b/src/menu.cc
index ac8ff2ac..617297ce 100644
--- a/src/menu.cc
+++ b/src/menu.cc
@@ -299,7 +299,11 @@ static void Menu_history_cb(Fl_Widget*, void *data)
*/
static void Menu_simple_popup_cb(void *data)
{
- const Fl_Menu_Item *m = ((Fl_Menu_Item *)data)->popup(popup_x, popup_y);
+ const Fl_Menu_Item *m;
+
+ ((UI*)popup_bw->ui)->window()->cursor(FL_CURSOR_DEFAULT);
+
+ m = ((Fl_Menu_Item *)data)->popup(popup_x, popup_y);
if (m && m->callback())
m->do_callback((Fl_Widget *)data);
@@ -308,9 +312,12 @@ static void Menu_simple_popup_cb(void *data)
static void Menu_popup_cb(void *data)
{
+ const Fl_Menu_Item *picked;
Menu_popup_data_t *d = (Menu_popup_data_t *)data;
- const Fl_Menu_Item *picked = d->menu->popup(popup_x, popup_y, d->title,
- d->picked);
+
+ ((UI*)popup_bw->ui)->window()->cursor(FL_CURSOR_DEFAULT);
+
+ picked = d->menu->popup(popup_x, popup_y, d->title, d->picked);
if (picked) {
d->picked = picked;
if (picked->callback())
diff --git a/src/tipwin.cc b/src/tipwin.cc
index d71f2a4e..204829b3 100644
--- a/src/tipwin.cc
+++ b/src/tipwin.cc
@@ -1,6 +1,19 @@
-// tipwin.cc is derived from "Fl_Slider with a floating tooltip to show
-// current value" at http://seriss.com/people/erco/fltk/#SliderTooltip by
-// Greg Ercolano.
+/*
+ * File: tipwin.cc
+ *
+ * Copyright 2012 Jorge Arellano Cid <jcid@dillo.org>
+ *
+ * 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.
+ *
+ * The tipwin idea was derived from the Fl_Slider example [1]
+ * by Greg Ercolano, which is in public domain.
+ *
+ * [1] http://seriss.com/people/erco/fltk/#SliderTooltip
+ */
+
#include <stdio.h>
#include <stdlib.h>
diff --git a/src/uicmd.cc b/src/uicmd.cc
index de90748f..a5280b76 100644
--- a/src/uicmd.cc
+++ b/src/uicmd.cc
@@ -481,6 +481,12 @@ static void win_cb (Fl_Widget *w, void *cb_data) {
CustTabs *tabs = (CustTabs*) cb_data;
int choice = 1, ntabs = tabs->num_tabs();
+ if (Fl::event_key() == FL_Escape) {
+ // Don't let FLTK close a browser window due to unhandled Escape
+ // (most likely with modifiers).
+ return;
+ }
+
if (prefs.show_quit_dialog && ntabs > 1)
choice = a_Dialog_choice5("Dillo: Close window?",
"Window contains more than one tab.",
diff --git a/test/table-narrow.html b/test/table-narrow.html
new file mode 100644
index 00000000..ad28417d
--- /dev/null
+++ b/test/table-narrow.html
@@ -0,0 +1,9 @@
+<table border=1>
+<tr>
+<td>W d<whatever>aaaaaaaaaaaa*<br>
+<td>WW d<whatever>aaaaaaaaaaaa*<br>
+<td>WWW d<whatever>aaaaaaaaaaaa*<br>
+<td>WWWW d<whatever>aaaaaaaaaaaa*<br>
+<td>WWWWW d<whatever>aaaaaaaaaaaa*<br>
+<td>WWWWWW d<whatever>aaaaaaaaaaaa*<br>
+</table>