Bug 214018 - Menu accelerator key of menu item Edit->Lower-case does not work
Summary: Menu accelerator key of menu item Edit->Lower-case does not work
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: lesstif
Version: 6
Hardware: i686
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Patrice Dumas
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2006-11-04 16:38 UTC by Roland Hermans
Modified: 2007-11-30 22:11 UTC (History)
1 user (show)

Fixed In Version: 0.95.0-19.fc7
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2007-09-12 16:44:09 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

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.


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