Bug 214018 - Menu accelerator key of menu item Edit->Lower-case does not work
Menu accelerator key of menu item Edit->Lower-case does not work
Product: Fedora
Classification: Fedora
Component: lesstif (Show other bugs)
i686 Linux
medium Severity medium
: ---
: ---
Assigned To: Patrice Dumas
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2006-11-04 11:38 EST by Roland Hermans
Modified: 2007-11-30 17:11 EST (History)
1 user (show)

See Also:
Fixed In Version: 0.95.0-19.fc7
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2007-09-12 12:44:09 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Roland Hermans 2006-11-04 11:38:58 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):

How reproducible:

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
Actual results:
selected text is converted to UPPER-case

Expected results:
selected text is converted to lower-case

Additional info:
Comment 1 Jindrich Novy 2006-11-07 09:19:19 EST
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
to lower-case:

Breakpoint 1, changeCase (window=0x8de7990, makeUpper=0) at shift.c:201
201         printf("changeCase %d!\n", makeUpper);
(gdb) bt
#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);
(gdb) bt
#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.
Comment 2 Thomas Woerner 2006-11-07 09:52:36 EST
This is an extra package. Assigning to extras.
Comment 3 Patrice Dumas 2006-11-07 10:20:14 EST
I cannot reproduce because of my keyboard layout, indeed to have
a 6 I have to use shift. Is it the case for you?
Comment 4 Roland Hermans 2006-11-07 13:43:21 EST
No, I don't have to press shift to enter a 6. I use standard US keyboard layout.
From my /etc/X11/xorg.conf:

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"
	Option	    "XkbModel" "pc105"
    	Option	    "XkbLayout" "us"

Locale setting is nl_NL.UTF-8, but if I run e.g.

    LANG=C nedit

the problem persists.

Also I can confirm the findings of Jindrich Novy in comment #2 that nedit runs
fine when using the openmotif library.
Comment 5 Roland Hermans 2006-11-07 13:44:21 EST
correction: reference should of course be to comment #1
Comment 6 Patrice Dumas 2006-11-08 16:32:01 EST
I'll have a look at that. I don't know when exactly.
Comment 7 Patrice Dumas 2006-11-09 17:25:23 EST
This seems to be that bug:
Comment 8 Patrice Dumas 2006-11-19 11:55:59 EST
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
DEBUG_FILE=/some/where/lesstif.out DEBUG_TOGGLE=on

Then you launch nedit:

$ 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.
Comment 9 Hans de Goede 2007-08-30 18:45:17 EDT
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.
Comment 10 Fedora Update System 2007-09-04 18:06:23 EDT
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.
Comment 11 Fedora Update System 2007-09-12 12:44:03 EDT
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.

Note You need to log in before you can comment on or make changes to this bug.