Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: xsrc/external/mit/ctwm/dist



Module Name:    xsrc
Committed By:   nia
Date:           Sun Apr 11 10:11:58 UTC 2021

Modified Files:
        xsrc/external/mit/ctwm/dist: add_window.c add_window.h clicktofocus.c
            clicktofocus.h ctwm.h cursor.c cursor.h events.h gc.c gc.h
            gram.tab.h gram.y iconmgr.c iconmgr.h icons.c icons.h lex.l list.c
            list.h menus.c menus.h mwmhints.c mwmhints.h parse.c parse.h
            screen.h session.c session.h sound.c sound.h types.h util.c util.h
            version.c version.h vscreen.c vscreen.h windowbox.c windowbox.h
Added Files:
        xsrc/external/mit/ctwm/dist: ctwm.1 ctwm_atoms.c ctwm_atoms.h
            ctwm_config.h event_names_table.h ewmh_atoms.c ewmh_atoms.h
            functions_deferral.h functions_defs.h
            functions_dispatch_execution.h functions_parse_table.h
Removed Files:
        xsrc/external/mit/ctwm/dist: CHANGES Imakefile Imakefile.local-template
            PROBLEMS README README.VMS README.gnome TODO TODO.gnome
            ctwm.axp_opt ctwm.c ctwm.com ctwm.man ctwm.spec ctwm.txt
            ctwm.vax_opt demolib.c descrip.local-template descrip.mms
            descrip.submms events.c example.ctwmrc gendeftwmrc.com gnome.c
            gnome.h gnomewindefs.h gram.c_VMS gram.h_VMS gtw.c levitte.ctwmrc
            lex.c_VMS libctwm.c link.com lnm.c lnm.h make.com mk_tar.sh
            peterc.ctwmrc resize.c resize.h siconify.bm sound.doc system.ctwmrc
            system.ctwmrc.gnome twm.h vms.txt vms2.txt vms_cmd_services.c
            vms_cmd_services.h workmgr.c workmgr.h

Log Message:
Merge ctwm-4-0-3

# CTWM Change History

## 4.0.3  (2019-07-21)

### Bugfixes

1. Perform various manipulations and overrides of `WM_HINTS` property
   when it gets reset during runtime, like we do when initially adopting
   the window.  The most visible effect of this was in windows that don't
   give a focus hint (which we override to give focus), but then reset
   `WM_HINTS` later and still don't give us a hint, where we wound up not
   re-overriding previously.  Reported for `xvile` by Wayne Cuddy.

1. The font height estimation changes in 4.0.0 were not applied correctly
   when UseThreeDMenus was set, leading to some odd vertical misalignment
   of the text with some fonts.  Reported by Wayne Cuddy.

1. A failure in OTP consistency checks caused by the handling of
   transients of fullscreen windows has been fixed.  This manifested as
   failures in OtpCheckConsistencyVS() assertions.

## 4.0.2  (2018-08-25)

### Backward-Incompatible Changes And Removed Features

1. The `UseThreeDIconBorders` config var has been removed.  It came in
   silently and undocumented in 3.4 and has never done anything.

1. The attempts to use DNS lookups for setting the `HOSTNAME` `m4` variable
   have been removed; it is now just a duplicate of `CLIENTHOST`.

### New Features

1. The EWMH `_NET_WM_NAME` property is now supported, and used for the
   window name in place of the ICCCM `WM_NAME` when set.  By default, we
   also accept `UTF8_STRING` encoded `WM_NAME` as a result of this
   change; see below for var to restore historical strictness.

1. The EWMH `_NET_WM_ICON_NAME` property is now supported, and used for
   the icon name in place of the ICCCM `WM_ICON_NAME` when set.  Similar
   comments as above apply to the encodings.

1. Support has been added for `CTWM_WM_NAME` and `CTWM_WM_ICON_NAME`
   properties, which will override any window/icon names otherwise
   specified.  This may be useful for applications that set unhelpful
   names themselves, or for manually adjusting labelling.  These
   properties can be set from the command line via `xprop`; as an
   example, `xprop -f CTWM_WM_NAME 8u -set CTWM_WM_NAME "awesome
   windowsauce"`.  See `xprop(1)` manual for details; the `s`, `t`, and
   `u` field type specifiers will all work.

1. When no icon name is set for a window, we've always used the window
   name for the icon name as well.  But that only happened the first time
   the window name is set; after that, the icon name is stuck at the
   first name.  It now updates along with the window name, if no icon
   name is set.

1. All icon manager windows will now have the `TwmIconManager` class set
   on them, so they can be addressed en mass by other config like
   `NoTitle` by that class name.

### New Config Options

1. Added `DontNameDecorations` config option to disable setting names on
   the X windows we create for window decoration (added in 4.0.0).  These
   have been reported to confuse `xwit`, and might do the same for other
   tools that don't expect to find them on non-end-app windows.  Reported
   by Frank Steiner.

1. Added `StrictWinNameEncoding` config option to enable historical
   behavior, where we're reject invalid property encoding for window
   naming properties (like a `UTF8_STRING` encoded `WM_NAME`).

### Bugfixes

1. Fix up broken parsing of `IconifyStyle "sweep"`.  Bug was introduced
   in 4.0.0.

1. When multiple X Screens are used, building the temporary file for m4
   definitions could fail with an error from `mkstemp()`.  Reported by
   Manfred Knick.

1. When multiple X Screens are used, the OTP code didn't recognize the
   difference, and kept everything in one list.  This caused the internal
   consistency checks to trip when it didn't find all the windows it
   expected.  Reported by Terran Melconian.

1. When `ReverseCurrentWorkspace` is set, mapping windows not on the
   current workspace (e.g., via restarting ctwm, or creating new windows
   with the desktop set via EWMH properties) could segfault.  Reported by
   Sean McAllister.

1. Fix some edge cases where we'd fight other apps' focus handling.  When
   an application moved focus itself to an unrelated (in X terms) window,
   our processing would often race and re-move the focus to the root
   ourselves.  This was visible with e.g. sub-windows in Firefox for
   context menu and urlbar dropdown, which would flash on and then
   disappear.

1. When creating a new transient window of an existing full-screen
   window, the OTP stacking may cause it to be stuck below the main
   window due to the special handling of full-screen focused windows in
   EWMH.  It should now be forced to the top.

1. Building ctwm since 4.0.0 in certain locales could misorder functions
   in the lookup table, leading to troubles parsing the config file.
   You'd get some loud "INTERNAL ERROR" lines from ctwm when running it
   if this were the case.  Now fixed.  Reported by Richard Levitte.

## 4.0.1  (2017-06-05)

### User Visible Changes

1. Fix a bug where fullscreen windows could sometimes wind up incorrectly
   stacked due to a focus-handling issue.  This would lead to ctwm
   aborting with an assertion failure in the OTP code, like `Assertion
   failed: (PRI(owl) >= priority), function OtpCheckConsistencyVS`.

1. Fix an edge case (probably only triggerable via manual work with EWMH
   messages) where a window could wind up resized down to nothing.

### Internals

1. Systems with the ctfconvert/ctfmerge tools available will now use them
   to include CTF info in the compiled binary.  This allows more detailed
   inspection of the running process via DTrace (e.g., the layout of the
   structs).

1. The initial rumblings of a Developer's Manual are now in
   `doc/devman/`.  This isn't tied into the main build, and there's no
   real reason it ever will be.  Things of interest to _users_ should
   wind up in the main manual; this should only have things of interest
   to people _developing_ ctwm.

## 4.0.0  (2017-05-24)

### Build System Change

The old `imake` build system has been replaced by a new structure using
`cmake`.  This makes [cmake](https://cmake.org/) a requirement to build
ctwm.  See the `README.md` file for how to run it.

A fallback minimal build system is available in the `minibuild/`
directory for environments that can't use the main one.  This is likely
to need some manual adjustment on many systems, and the main build is
strongly preferred.  But it should suffice to get a runnable binary if
all else fails.

### Platform Support

Support for many non-current platforms has been dropped.  In particular,
remnants of special-case VMS support have been removed.  Many old and now
dead Unix variants have been similarly desupported.  Generally, platforms
without support for C99 and mid-2000's POSIX are increasingly less likely
to work.

### Backward-Incompatible Changes And Removed Features

1. Argument parsing has been rewritten to use `getopt_long()`.  All
   `-long` options are now `--long` instead.  `-version`, `-info`,
   `-cfgchk`, and `-display` are still accepted if they're the first
   option given, to make it easier for scripts to simultaneously support
   before/after versions; this shim will be removed in a later version.

1. Support for the SDSC imconv library, and the IMCONV options related to
    it, has been removed.  The last release is almost 20 years old, and
    doesn't support any remotely recent platforms.

1. The USE_SIGNALS code to use signal-driven animations has been removed.
    It's been non-default since 3.2 (more than 20 years ago), and not
    documented anywhere but in the code and a comment in this file.

1. The USE_GNOME option and code for GNOME1 support has been removed.

1. The old-style title button action specifications (without an `=` in
   them) deprecated since 3.8 are no longer supported.  Just replacing
   the "`:`" with "`= :`" should suffice to make it work right in 3.8+.
   If you need to share configs with older versions, you'll have to
   conditionalize the syntax with m4 or some other preprocessing.

1. The `f.cut` (and `^` alias for it), `f.cutfile`, and `f.file`
   functions have been removed.  These functions for messing with the
   clipboard were never visibly documented, and came into the manpage in
   3.0 already commented-out and saying they were obsolete.

1. The `f.source` function has been removed.  It's never done anything
   (except beep) as far back as 1.1 and has never been documented.

1. The `f.movemenu` function has been removed.  It was added silently in
   2.1, has never done anything, and has never been documented.

1. The `NoVersion` config parameter has been removed.  It's been
   undocumented, obsoleted, and done absolutely nothing since 1.1.

1. Support for non-flex versions of lex(1) is deprecated, and will take
   some manual work to build.  Note that release tarballs include
   prebuild lexers, so this probably only matters to people building from
   a development tree.  (And if you are, and really need AT&T or some
   other lex to work, talk to us!)

1. Support for building with internal regex implementation has been
   disabled; we now require regex support from libc.  It is still
   possible to enable by manually editing files, but this will be removed
   in the future.  If you have to mess with this, please bring it up on
   the mailing list so we can figure out a long-term solution.

1. Parsing of the `ctwm.workspaces` X resource (i.e., setting `-xrm
   "ctwm.workspaces: something"` on program command-lines) since 3.0 has
   collapsed doubled backslashes (`\\`) into a single (`\`).  However,
   there were no other escapes, so this didn't gain anything.  Using a
   single will work with both variants, unless you need multiple
   backslashes in a row in your workspace names.

1. The `IconRegion` and `WindowRegion` config params both take a `vgrav
   hgrav` pair of parameters to control layout.  Previous versions would
   accept a `hgrav vgrav` ordering in the parsing, and would mostly work
   by odd quirks of the code.  The parsing has been made stricter, so
   only the documented `vgrav hgrav` ordering is accepted now.

### User Visible Changes

1. The default install locations have been changed.  See the README for
    details about where things are installed and how to change them.

1. Several default settings have been changed.  ctwm now defaults to
   acting as though `RestartPreviousState`, `NoGrabServer`,
   `DecorateTransients`, `NoBackingStore`, `RandomPlacement`,
   `OpaqueMove`, `OpaqueResize`, `SortIconManager`, and `StartInMapState`
   have been set.  Those settings that didn't previously have an inverse
   (to get the behavior previously seen when they weren't specified) have
   such added; see below.

1. Added various config parameters as inverses of existing params.  New
   params (with existing param they invert in parens):
    * `BackingStore` (`NoBackingStore`)
    * `GrabServer` (`NoGrabServer`)
    * `StartInButtonState` (`StartInMapState`)
    * `NoSortIconManager` (`SortIconManager`)
    * `NoRestartPreviousState` (`RestartPreviousState`)
    * `NoDecorateTransients` (`DecorateTransients`)

1. Added `DontShowWelcomeWindow` config option to not show welcome
    splashscreen image.

1. Selected a number of cleanups from Stefan Monnier
    <<monnier%IRO.UMontreal.CA@localhost>>, including rate-limiting of animations
    using a new `_XA_WM_END_OF_ANIMATION` message.  Font height is
    estimated based on used characters only.  Added some similar changes,
    improved the prevention of placing windows off-screen, the
    `f.rescuewindows` function for emergencies, a hack-fix for
    `f.adoptwindow`. More virtual screen tweaks/fixes.

1. Added the remaining OnTopPriority changes from Stefan Monnier
    <<monnier%IRO.UMontreal.CA@localhost>>: `AutoPopup`, `AutoPriority`,
    `OnTopPriority`, `PrioritySwitching`, `f.changepriority`,
    `f.priorityswitching`, `f.setpriority`, `f.switchpriority`,
    `f.tinylower`, `f.tinyraise`.  Currently consistency checking code is
    enabled, which will terminate with an assertion failure if something
    unexpected happens. Smoothed out various inconsistencies that this
    check discovered when virtual screens are used.

1. Basic support for EWMH (Extended Window Manager Hints) added and
    enabled by default.  `EWMHIgnore {}` config option allows selectively
    disabling bits.
    [Olaf "Rhialto" Seibert, Matthew Fuller]

1. Icon manager windows are no longer included in the window ring
    (that had confusing effects on the focus sequence).

1. Added `--dumpcfg` command-line option to print out the compiled-in
    fallback config file.

1. The `Occupy {}` specification now accepts "ws:" as a prefix for
    workspaces.  This may break things if you have workspaces with names
    that differ only by that prefix (e.g., you have workspaces "abc" and
    "ws:abc", and your `Occupy {}` declarations affects both.

1. If ctwm is built with rplay support, sounds may now be configured with
    the RplaySounds {} parameter in the config file in place of the
    `~/.ctwm-sounds` file.  If so, ctwm will give a warning if
    `.ctwm-sounds` exists; support for the external file will be removed
    in a future version.  Also the `SoundHost` config parameter is
    replaced by `RplaySoundHost`; the old name is still accepted, but
    will be removed in a future version.

1. Added `MWMIgnore {}` config option to allow selectively disabling
    honoring of some Motif WM hints.

1. Warping to a window now explicitly sets focus on that window.  This
    would generally (but not always, in the presence of odd X server
    behavior) have already happened for users with focus following mouse,
    but now occurs for `ClickToFocus` users as well.
    [Alexander Klein]

1. Several bugs relating to the Occupy window were fixed.  Iconifying the
    Occupy window no longer loses it and leaves you unable to pull it up
    again.  Minor undersizing in some cases fixed.

1. Windows which fail to use the `WM_HINTS` property to tell us things like
    whether they want us to give them focus are now explicitly given
    focus anyway.  This should fix focus problems with some apps
    (Chromium is a common example).

1. Added `ForceFocus {}` config option to forcibly give focus to all (or
    specified) windows, whether they request it or not.  Previously the
    code did this unconditionally (except when no `WM_HINTS` were
    provided; x-ref previous), but this causes problems with at least
    some programs that tell us they don't want focus, and mean it
    (some Java GUI apps are common examples).

1. `OpaqueMoveThreshold` values >= 200 (the default) are now treated as
    infinite, and so will always cause opaque moving.

### Internals

1. A new code style has been chosen and the entire codebase reformatted
    into it.  Configs for
    [Artistic Style](http://astyle.sourceforge.net/)
    to generate the proper output are in the source tree.

1. The `full_name` element of the TwmWindow structure has been removed.
    Consumers should just use the `name` element instead.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r0 xsrc/external/mit/ctwm/dist/CHANGES \
    xsrc/external/mit/ctwm/dist/Imakefile \
    xsrc/external/mit/ctwm/dist/Imakefile.local-template \
    xsrc/external/mit/ctwm/dist/PROBLEMS \
    xsrc/external/mit/ctwm/dist/README.VMS \
    xsrc/external/mit/ctwm/dist/README.gnome xsrc/external/mit/ctwm/dist/TODO \
    xsrc/external/mit/ctwm/dist/TODO.gnome \
    xsrc/external/mit/ctwm/dist/ctwm.axp_opt \
    xsrc/external/mit/ctwm/dist/ctwm.c xsrc/external/mit/ctwm/dist/ctwm.com \
    xsrc/external/mit/ctwm/dist/ctwm.man \
    xsrc/external/mit/ctwm/dist/ctwm.spec \
    xsrc/external/mit/ctwm/dist/ctwm.txt \
    xsrc/external/mit/ctwm/dist/ctwm.vax_opt \
    xsrc/external/mit/ctwm/dist/demolib.c \
    xsrc/external/mit/ctwm/dist/descrip.local-template \
    xsrc/external/mit/ctwm/dist/descrip.mms \
    xsrc/external/mit/ctwm/dist/descrip.submms \
    xsrc/external/mit/ctwm/dist/example.ctwmrc \
    xsrc/external/mit/ctwm/dist/gendeftwmrc.com \
    xsrc/external/mit/ctwm/dist/gnome.c xsrc/external/mit/ctwm/dist/gnome.h \
    xsrc/external/mit/ctwm/dist/gnomewindefs.h \
    xsrc/external/mit/ctwm/dist/gram.c_VMS \
    xsrc/external/mit/ctwm/dist/gram.h_VMS xsrc/external/mit/ctwm/dist/gtw.c \
    xsrc/external/mit/ctwm/dist/levitte.ctwmrc \
    xsrc/external/mit/ctwm/dist/lex.c_VMS \
    xsrc/external/mit/ctwm/dist/libctwm.c \
    xsrc/external/mit/ctwm/dist/link.com xsrc/external/mit/ctwm/dist/lnm.c \
    xsrc/external/mit/ctwm/dist/lnm.h xsrc/external/mit/ctwm/dist/make.com \
    xsrc/external/mit/ctwm/dist/mk_tar.sh \
    xsrc/external/mit/ctwm/dist/peterc.ctwmrc \
    xsrc/external/mit/ctwm/dist/resize.c xsrc/external/mit/ctwm/dist/resize.h \
    xsrc/external/mit/ctwm/dist/siconify.bm \
    xsrc/external/mit/ctwm/dist/sound.doc \
    xsrc/external/mit/ctwm/dist/system.ctwmrc.gnome \
    xsrc/external/mit/ctwm/dist/twm.h xsrc/external/mit/ctwm/dist/vms.txt \
    xsrc/external/mit/ctwm/dist/vms2.txt \
    xsrc/external/mit/ctwm/dist/vms_cmd_services.c \
    xsrc/external/mit/ctwm/dist/vms_cmd_services.h \
    xsrc/external/mit/ctwm/dist/workmgr.h
cvs rdiff -u -r1.2 -r0 xsrc/external/mit/ctwm/dist/README
cvs rdiff -u -r1.2 -r1.3 xsrc/external/mit/ctwm/dist/add_window.c \
    xsrc/external/mit/ctwm/dist/parse.c xsrc/external/mit/ctwm/dist/vscreen.c
cvs rdiff -u -r1.1 -r1.2 xsrc/external/mit/ctwm/dist/add_window.h \
    xsrc/external/mit/ctwm/dist/clicktofocus.c \
    xsrc/external/mit/ctwm/dist/clicktofocus.h \
    xsrc/external/mit/ctwm/dist/ctwm.h xsrc/external/mit/ctwm/dist/cursor.c \
    xsrc/external/mit/ctwm/dist/cursor.h xsrc/external/mit/ctwm/dist/events.h \
    xsrc/external/mit/ctwm/dist/gc.c xsrc/external/mit/ctwm/dist/gc.h \
    xsrc/external/mit/ctwm/dist/gram.tab.h xsrc/external/mit/ctwm/dist/gram.y \
    xsrc/external/mit/ctwm/dist/iconmgr.c \
    xsrc/external/mit/ctwm/dist/iconmgr.h xsrc/external/mit/ctwm/dist/icons.c \
    xsrc/external/mit/ctwm/dist/icons.h xsrc/external/mit/ctwm/dist/lex.l \
    xsrc/external/mit/ctwm/dist/list.c xsrc/external/mit/ctwm/dist/list.h \
    xsrc/external/mit/ctwm/dist/menus.h \
    xsrc/external/mit/ctwm/dist/mwmhints.c \
    xsrc/external/mit/ctwm/dist/mwmhints.h \
    xsrc/external/mit/ctwm/dist/parse.h xsrc/external/mit/ctwm/dist/screen.h \
    xsrc/external/mit/ctwm/dist/session.h xsrc/external/mit/ctwm/dist/sound.c \
    xsrc/external/mit/ctwm/dist/sound.h xsrc/external/mit/ctwm/dist/types.h \
    xsrc/external/mit/ctwm/dist/util.h xsrc/external/mit/ctwm/dist/version.c \
    xsrc/external/mit/ctwm/dist/version.h \
    xsrc/external/mit/ctwm/dist/vscreen.h \
    xsrc/external/mit/ctwm/dist/windowbox.c \
    xsrc/external/mit/ctwm/dist/windowbox.h
cvs rdiff -u -r0 -r1.1 xsrc/external/mit/ctwm/dist/ctwm.1 \
    xsrc/external/mit/ctwm/dist/ctwm_atoms.c \
    xsrc/external/mit/ctwm/dist/ctwm_atoms.h \
    xsrc/external/mit/ctwm/dist/ctwm_config.h \
    xsrc/external/mit/ctwm/dist/event_names_table.h \
    xsrc/external/mit/ctwm/dist/ewmh_atoms.c \
    xsrc/external/mit/ctwm/dist/ewmh_atoms.h \
    xsrc/external/mit/ctwm/dist/functions_deferral.h \
    xsrc/external/mit/ctwm/dist/functions_defs.h \
    xsrc/external/mit/ctwm/dist/functions_dispatch_execution.h \
    xsrc/external/mit/ctwm/dist/functions_parse_table.h
cvs rdiff -u -r1.3 -r0 xsrc/external/mit/ctwm/dist/events.c \
    xsrc/external/mit/ctwm/dist/workmgr.c
cvs rdiff -u -r1.9 -r1.10 xsrc/external/mit/ctwm/dist/menus.c
cvs rdiff -u -r1.4 -r1.5 xsrc/external/mit/ctwm/dist/session.c \
    xsrc/external/mit/ctwm/dist/util.c
cvs rdiff -u -r1.9 -r0 xsrc/external/mit/ctwm/dist/system.ctwmrc

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index