The symbol hp-ux is used to tag files for installation on HP machines
in the UDB databases. To ensure the correct release streams are
defined, these symbols (hp-ux, linux, freebsd, etc) are undef'd so
that they are not evaluated in the context of db file generation by
the preprocessor.
A change in the FreeBSD 10 patch disabled this, possibly due to
'hp-ux' being an invalid cpp symbol on FreeBSD 10 machines, which now
use clang by default.
Undefining these cpp symbols is actually required, otherwise linux,
for example, is defined as a '1' in the generated databases, which
will not match the release stream name 'linux', therefore all of the
files tagged as 'linux' are never installed.
To fix this, revert the change made in the FreeBSD 10 patch, and
rename all occurances of 'hp-ux' to 'hpux' in the UDB files to avoid
the potential for cpp trouble when hp-ux is specified.
As a result of this change, 'hpux' is now the name of the release
stream for hp machines, not 'hp-ux'.
This would allow different locales to be specified for
programs/localization (DtLocalesToBuild) and doc/
(DtDocLocalesToBuild).
This would be useful for 'partial' translations like the Greek el_GR
locale, where message catalogs, actions, or other items are localized,
but documentation like the help system and dtinfo are not.
The cause of the bug was that X*DrawImageString draws background
according to the extents of the given string, not to extents of the font set,
which determine terminal line height.
Now, when such a situation is detected, the background is cleared before
drawing the characters.
The patch converts desktop_grid[] from Boolean array into array of
counters of objects, which are placed on cells. When object is
placed on /removed from the screen the counter gets incremented/decremented.
The panel registration code rather stupidly assumed that display
size is always 1280x1024 pixels. Because of this, depending on screen
size, the panel could be registered somewhere in the center of the screen
or completely or partially beyond of it.
The panels were registered only on startup, not those, which were added
from UI.
The fix moves panel registration into separate routine and removes assumption
about display size. The fix yet is not complete since it still makes assumption
about panel's geometry: from dtfile there is still no way to find out
dinamically the size of panel and it's location.
On small screens segfaults could be also triggered without any icons on dtfile
startup if dtwm panel (or part of it) was registered beyond the screen when
RegisterInGrid() was called by InitializeDesktopGrid().
The patch also makes grid registration work for large objects (larger than
2 cells in any direction, like dtwm panel or icon with long file name).
Previously only rectangle vertices were registered.
There was a check in linux.cf for the Linux libc version that didn't
work, since these were never set anywhere. Presumably current Xorg
imake sets these, but since we aren't using that... (yet)
As a result, the build assumed that thread-safe API's were not
supported. Setting the default libc major version to '6' allows the
proper build to take place. libc5 was never threadsafe and no one has
probably used it in over 10 years.
As a result, some earlier porting fixes that referenced '__fds_bits'
on linux systems had to be reverted as these are not valid in an MT
environment. They are also not neccessary when building in such an
environment, as the normal 'fds_bits' works fine.
This patch defintely needs testing on many linux systems.