Red Hat Bugzilla – Bug 214018
Menu accelerator key of menu item Edit->Lower-case does not work
Last modified: 2007-11-30 17:11:47 EST
Description of problem:
The menu accelerator key of menu item Edit->Lower-case does not work.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. start nedit
2. enter some text containing both lower-case and upper-case characters
3. Press Ctrl+A to select the entered text
4. Press Shift+Ctrl+6
selected text is converted to UPPER-case
selected text is converted to lower-case
Roland, I investigated the problem today and the bug is in the lesstif library,
which incorrectly handles the event. I checked the accelerator aliases in nedit
and the lower-case correction is there correctly handled by nedit.
I added the printf("changeCase %d!\n", makeUpper); to the changeCase function
what nedit uses to change case of a selected block. When nedit is built against
openmotif the your reproduction case ends up correctly (the chracters are
converted to lowercase), note makeUpper == 0, what we want to convert characters
Breakpoint 1, changeCase (window=0x8de7990, makeUpper=0) at shift.c:201
201 printf("changeCase %d!\n", makeUpper);
#0 changeCase (window=0x8de7990, makeUpper=0) at shift.c:201
#1 0x00178a9b in XtCallActionProc () from /usr/lib/libXt.so.6
#2 0x0805f2fd in doActionCB (w=0x8e19600, clientData=0x80ecffe,
callData=0xbff69cc0) at menu.c:1369
#3 0x0014d4cb in XtCallCallbackList () from /usr/lib/libXt.so.6
#4 0x0044cfcd in XmVaCreatePanedWindow () from /usr/lib/libXm.so.4
#5 0x004fbb4a in _XmAllowAcceleratedInsensitiveUnmanagedMenuItems () from
#6 0x004fbd60 in _XmAllowAcceleratedInsensitiveUnmanagedMenuItems () from
#7 0x004fbded in _XmRC_KeyboardInputHandler () from /usr/lib/libXm.so.4
#8 0x0015b715 in XtDispatchEventToWidget () from /usr/lib/libXt.so.6
#9 0x0015beaa in _XtSendFocusEvent () from /usr/lib/libXt.so.6
#10 0x0015ad17 in XtDispatchEvent () from /usr/lib/libXt.so.6
#11 0x0015aecc in XtAppMainLoop () from /usr/lib/libXt.so.6
#12 0x0804f434 in main (argc=19, argv=0xbff6c7b4) at nedit.c:763
#13 0x00634f2c in __libc_start_main () from /lib/libc.so.6
#14 0x0804e671 in _start ()
In case of lesstif the situation looks like:
Breakpoint 1, changeCase (window=0x9bcbf68, makeUpper=1) at shift.c:201
201 printf("changeCase %d!\n", makeUpper);
#0 changeCase (window=0x9bcbf68, makeUpper=1) at shift.c:201
#1 0x00455a9b in XtCallActionProc () from /usr/lib/libXt.so.6
#2 0x0805f2cd in doActionCB (w=0x9beea60, clientData=0x80edf1d,
callData=0xbf8205cc) at menu.c:1369
#3 0x0042a4cb in XtCallCallbackList () from /usr/lib/libXt.so.6
#4 0x00e9a43f in _XmInitProtocols () from /usr/lib/libXm.so.2
#5 0x00e8faef in _XmManagerUninstallAccelerator () from /usr/lib/libXm.so.2
#6 0x004387b9 in XtDispatchEventToWidget () from /usr/lib/libXt.so.6
#7 0x00438eaa in _XtSendFocusEvent () from /usr/lib/libXt.so.6
#8 0x00437d17 in XtDispatchEvent () from /usr/lib/libXt.so.6
#9 0x00437ecc in XtAppMainLoop () from /usr/lib/libXt.so.6
#10 0x0804f4f4 in main (argc=28, argv=0xbf823064) at nedit.c:763
#11 0x00116f2c in __libc_start_main () from /lib/libc.so.6
#12 0x0804e641 in _start ()
Note that the callback function changeCase() is called with makeUpper == 1
regardless the Ctrl+6 or Shift+Ctrl+6 shortcut even though it's properly defined.
Reassigning to lesstif.
This is an extra package. Assigning to extras.
I cannot reproduce because of my keyboard layout, indeed to have
a 6 I have to use shift. Is it the case for you?
No, I don't have to press shift to enter a 6. I use standard US keyboard layout.
From my /etc/X11/xorg.conf:
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
Locale setting is nl_NL.UTF-8, but if I run e.g.
the problem persists.
Also I can confirm the findings of Jindrich Novy in comment #2 that nedit runs
fine when using the openmotif library.
correction: reference should of course be to comment #1
I'll have a look at that. I don't know when exactly.
This seems to be that bug:
I tried to reproduce it and I can't. Maybe you could help me by sending
the debugging output of lesstif. For that, first you need to rebuild
lesstif with --enable-debug --disable-production. Then you can do
(all in one line)
$ export DEBUG_SOURCES='all:-TravAct.c:-Traversal.c' DEBUG_PRINT_WIDGETID=y
Then you launch nedit:
you prepare a selection
You save the lesstif debug file
$ cd /some/where/
$ cp lesstif.out lesstif.out-before
You then do the accelerator which don't work Shift+Ctrl+6
immediatly after that, save the debug file
$ cp lesstif.out lesstif.out-after
And then you attach lesstif.out-before and lesstif.out-after to the
I can give you a compiled binary, a srpm, or instructions on how to
recompile and use a ununinstalled version with LD_LIBRARY_PATH if you
don't know how to produce and use a lesstif binary with --enable-debug
Beware that there is a known (and on purpose) vulnerability in lesstif
when compiled with --disable-production, so this should only be used
for testing purposes.
Thanks for the pointer to the upstream bug report, that helped. A fixed version
is building for both rawhide and F-7, I'll push it to updates-testing when the
build is completed, a comment saying that the update is available in
updates-testing will be added here. Please confirm that the test update fixes
this, then I will push it to the regular updates repo.
lesstif-0.95.0-19.fc7 has been pushed to the Fedora 7 testing repository. If problems still persist, please make note of it in this bug report.
lesstif-0.95.0-19.fc7 has been pushed to the Fedora 7 stable repository. If problems still persist, please make note of it in this bug report.