Bug 214018

Summary: Menu accelerator key of menu item Edit->Lower-case does not work
Product: [Fedora] Fedora Reporter: Roland Hermans <rolandh>
Component: lesstifAssignee: Patrice Dumas <pertusus>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: 6CC: hdegoede
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
Whiteboard:
Fixed In Version: 0.95.0-19.fc7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-09-12 16:44:09 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Roland Hermans 2006-11-04 16:38:58 UTC
Description of problem:
The menu accelerator key of menu item Edit->Lower-case does not work.

Version-Release number of selected component (if applicable):
nedit-5.5-10.fc6.src.rpm
lesstif-0.95.0-10.fc6.src.rpm

How reproducible:
always

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 14:19:19 UTC
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
/usr/lib/libXm.so.4
#6  0x004fbd60 in _XmAllowAcceleratedInsensitiveUnmanagedMenuItems () from
/usr/lib/libXm.so.4
#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 14:52:36 UTC
This is an extra package. Assigning to extras.

Comment 3 Patrice Dumas 2006-11-07 15:20:14 UTC
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 18:43:21 UTC
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"
EndSection

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 18:44:21 UTC
correction: reference should of course be to comment #1

Comment 6 Patrice Dumas 2006-11-08 21:32:01 UTC
I'll have a look at that. I don't know when exactly.

Comment 7 Patrice Dumas 2006-11-09 22:25:23 UTC
This seems to be that bug:
http://sourceforge.net/tracker/index.php?func=detail&aid=1232451&group_id=8596&atid=108596

Comment 8 Patrice Dumas 2006-11-19 16:55:59 UTC
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
bugreport.

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
--disable-production.  

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 22:45:17 UTC
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 22:06:23 UTC
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 16:44:03 UTC
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.