Skip Menu |

Subject: update ribbon implementation for accessibility
The KfW 4.0 series uses the ribbon interface provided by the MFC library, which does not expose
control information to screen readers. A design goal for the MIT Kerberos application is to be
accessible, so we switched to using the ribbon interface provided by the windows SDK. The
following commits need to be pulled up to the 1.13 branch for the KfW 4.1 series:

Subject: git commit
Download (untitled) / with headers
text/plain 1.5KiB

Import separate large ribbon bitmaps

This is the content from homelarge.bmp split up into the
separate component images, since the windows ribbon has the
(more sane) interface of using a separate resource for each
graphic, instead of expecting them all in a single bitmap which
is sliced up at runtime.

The bitmaps are required to have alpha channels, and it seems that
the easiest way to generate bitmaps with alpha channels is to use
Microsoft Paint, since the normal Unix open-source graphics tools
do not want to output this format.

(cherry picked from commit 8f89dc561c1e8464c423bde854b6fd4283497559)
Author: Benjamin Kaduk <>
Committer: Tom Yu <>
Commit: 0e16cd41da066f88765662e0c1828836c850c074
Branch: krb5-1.13
src/windows/leash/res/cpwlarge.bmp | Bin 0 -> 4152 bytes
src/windows/leash/res/destroylarge.bmp | Bin 0 -> 4152 bytes
src/windows/leash/res/exportlarge.bmp | Bin 0 -> 4152 bytes
src/windows/leash/res/getticketlarge.bmp | Bin 0 -> 4152 bytes
src/windows/leash/res/import.bmp | Bin 0 -> 3126 bytes
src/windows/leash/res/importlarge.bmp | Bin 0 -> 4152 bytes
src/windows/leash/res/makedefaultlarge.bmp | Bin 0 -> 4152 bytes
src/windows/leash/res/newlarge.bmp | Bin 0 -> 4152 bytes
src/windows/leash/res/openlarge.bmp | Bin 0 -> 4152 bytes
src/windows/leash/res/renewlarge.bmp | Bin 0 -> 4152 bytes
10 files changed, 0 insertions(+), 0 deletions(-)
Subject: git commit

XML Ribbon markup file

The standard windows library ribbon interface is either constructed
at runtime or specified in an XML file. Since we have a static
set of functionality in our ribbon, it is simplest to just use the
XML file.

This should duplicate the interfaces currently provided by the
MFC ribbon, though the menu items in the file menu are slightly
taller than they used to be.

Use uicc.exe to compile the XML to the binary format and produce
a kfwribon.rc resource file and kfwribbon.h header.

(cherry picked from commit da60312f1352cbd82e39e31398f7ead2e817f119)
Author: Benjamin Kaduk <>
Committer: Tom Yu <>
Commit: 530136650826cad19966737a57cc3c6608e74601
Branch: krb5-1.13
src/windows/leash/ | 6 ++
src/windows/leash/kfwribbon.xml | 131 +++++++++++++++++++++++++++++++++++++++
2 files changed, 137 insertions(+), 0 deletions(-)
Subject: git commit

Mention Visual Studio 2010 SP1 in windows README

The service pack is needed to avoid a linker error due to an
issue with the cvtres.exe utility, which manifests as
LINK: fatal error LNK1123: failure during conversion to COFF: file
invalid or corrupt.

(cherry picked from commit 025008dd215c20f804823dafa3bd9f45135be53e)
Author: Ben Kaduk <>
Committer: Tom Yu <>
Commit: fe1ae97d79b35725449242898fabee69af69a209
Branch: krb5-1.13
src/windows/README | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Subject: git commit
Download (untitled) / with headers
text/plain 2.7KiB

Switch to Windows SDK Ribbon from MFC Ribbon

The MFC Ribbon implementation is not very accessible (e.g., to
screen reading software), whereas the windows ribbon provides
essentially the same functionality and good integration with
screen reading software, including the built-in Windows Narrator.

Remove the RT_RIBBON_XML resource from the resource file and
replace it with an inclusion of the generated kfwribbon.rc file.
Also remove the ribbon1.mfcribbon-ms ribbon description from the
res/ directory. Add the appropriate dependency relation in the

LeashUIApplication implements the IUIUApplication interfaces. It
appears to be difficult to cleanly tear down the underlying
IUIFramework and ribbon, since the WM_DESTROY event is handled by the
parent MFC window, which will not call IUIFramework::Destroy().
Manually inserting a call to IUIFramework::Destroy() in the shutdown
handling of the MFC classes is difficult, since the WM_DESTROY message
is handled by a different window than where the ribbon is initialized,
and the MFC framework will attempt to access window objects
corresponding to the UI Ribbon resources after they are destroyed,
which raises exceptions. It seems best to just go without destroying
the IUIFramework, since its lifecycle matches that of the application
and there will be no leaks during the application lifecycle.

LeashUICommandHandler implements the IUICommandHandler interfaces,
passing messages through to the existing MFC handlers, though the
default values for the various checkbox controls must be duplicated.

The (MFC) CMainFrame creates and maintains a handle to the
LeashUIApplication associated with the ribbon it creates, so that
it can query the height of the ribbon and redraw when the
LeashUIApplication signals that the ribbon size has changed.

Record that the added object files depend on kfwribbon.h, so that
the XML markup is compiled sufficiently early in the build.

(cherry picked from commit fa5edf1e72b142f14d36b7eb304f55066c5af2f9)
Author: Ben Kaduk <>
Committer: Tom Yu <>
Commit: 173d79e16765f73bcf0adec8b78d28a6038c305b
Branch: krb5-1.13
src/windows/leash/Leash.rc | 16 +-
src/windows/leash/LeashUIApplication.cpp | 291 ++++++++++++++++++++++
src/windows/leash/LeashUIApplication.h | 86 +++++++
src/windows/leash/LeashUICommandHandler.cpp | 262 ++++++++++++++++++++
src/windows/leash/LeashUICommandHandler.h | 72 ++++++
src/windows/leash/MainFrm.cpp | 39 +++-
src/windows/leash/MainFrm.h | 3 +
src/windows/leash/ | 6 +-
src/windows/leash/res/ribbon1.mfcribbon-ms | 352 ---------------------------
9 files changed, 758 insertions(+), 369 deletions(-)
Subject: git commit

Remove (old) consolidated ribbon bitmaps

We are no longer using the MFC ribbon, so these resources
are now unused. Garbage-collect them accordingly.

(cherry picked from commit 0fdbfb1891713b8ff91acba37dfb17b937929a71)
Author: Ben Kaduk <>
Committer: Tom Yu <>
Commit: 22c63cd5fd49144633873cf2aee64a1c27cf59cb
Branch: krb5-1.13
src/windows/leash/Leash.rc | 3 ---
src/windows/leash/res/homelarge.bmp | Bin 36918 -> 0 bytes
src/windows/leash/res/homesmall.bmp | Bin 11320 -> 0 bytes
src/windows/leash/res/main.bmp | Bin 1078 -> 0 bytes
src/windows/leash/resource.h | 4 ----
5 files changed, 0 insertions(+), 7 deletions(-)