Closed Bug 238382 Opened 21 years ago Closed 14 years ago

[ActiveX] tab navigation broken in forms in control

Categories

(Core Graveyard :: Embedding: ActiveX Wrapper, defect)

x86
Windows 2000
defect
Not set
major

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: max, Unassigned)

Details

Attachments

(1 file)

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6) Gecko/20040113 Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6) Gecko/20040113 Tab key doesn't work in embedded applications with ActiveX Reproducible: Always Steps to Reproduce: 1. Compile and run the sample application http://www.iol.ie/~locka/mozilla/MozCtlDemo2.zip 2. Go to any url with more than on field and put cursor into one of the fields 3. Press <Tab> key Actual Results: Nothing happens Expected Results: Next field should be selected WM_GETDLGCODE returns DLGC_WANTALLKEYS. I suppose it should return DLGC_WANTARROWS|DLGC_WANTTAB
I tested this, and DLGC_WANTALLKEYS & DLGC_WANTARROWS != 0 and WANTALLKEYS & DLGC_WANTTAB != 0, so this is not the problem. Actually CMozillaBrowser::OnGetDlgCode is only called a few time when it is created and when it gets the focus I think, but not when a key is pressed. What we should do is us a CComCompositeControl instead of a CComControl. See this Atl doc: "A control implemented by a CComCompositeControl-derived class has default tabbing behavior built in. When the control receives focus by being tabbed to in a containing application, successively pressing the TAB key will cause the focus to be cycled through all of the composite control's contained controls, then out of the composite control and on to the next item in the tab order of the container."
There's still something strange I have to find out, about how the control gets the focus the first time you click in it. But when you get into it with tab, you can then tab around all mozilla's buttons, text fields, etc.
Status: UNCONFIRMED → NEW
Ever confirmed: true
It's even stranger. I've compiled the test app mozilla-1.6/embedding/browser/activex/tests/cbrowse/ and tabs worked ok there. But when I removed from the dialog everything but the control itself, tabs didn't work again. To re-enable tabs in the browser there should be at least one control on the parent dialog with tab stops enabled (!)
Can the control simply inherit from the CComCompositeControl instead of CComControl? Unfortunately, replacing CComControl by CComCompositeControl in embedding/browser/activex/src/control/MozillaBrowser.h is not enough. Here is the command line output: StdAfx.cpp Building deps for /cygdrive/c/mozilla-build/source/seamonkey-1.7rc1/mozilla/embedding/browser/active x/src/control/StdAfx.cpp StdAfx.cpp statreg.cpp is obsolete. Please remove it from your project. atlimpl.cpp is obsolete. Please remove it from your project. atlctl.cpp is obsolete. Please remove it from your project. atlwin.cpp is obsolete. Please remove it from your project. C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlctl.h(1848) : error C2039: 'IDD' : is not a member of 'CMozillaBrowser' c:\mozilla-build\source\seamonkey-1.7rc1\mozilla\embedding\browser\activex\src\control\Mozil laBrowser.h(77) : see declaration of 'CMozillaBrowser' C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlctl.h(1846) : while compiling class-template member function 'LRESULT ATL::CComCompositeControl<T>::OnInitDialog(UINT,W PARAM,LPARAM,BOOL &)' with [ T=CMozillaBrowser ] c:\mozilla-build\source\seamonkey-1.7rc1\mozilla\embedding\browser\activex\src\control\Mozil laBrowser.h(81) : see reference to class template instantiation 'ATL::CComCompositeControl<T>' being compiled with [ T=CMozillaBrowser ] In the directory /cygdrive/c/mozilla-build/source/seamonkey-1.7rc1/mozilla/obj-i586-pc-msvc/embeddi ng/browser/activex/src/control The following command failed to execute properly: /cygdrive/c/mozilla-build/source/seamonkey-1.7rc1/mozilla/build/cygwin-wrapper cl -FoStdAfx.obj -c - DOSTYPE="WINNT5.1" -DOSARCH="WINNT" -DMOZ_ACTIVEX_CONTROL_SUPPORT -I. -I../../../../../dist/include/ xpcom -I../../../../../dist/include/string -I../../../../../dist/include/js -I../../../../../dist/in clude/widget -I../../../../../dist/include/gfx -I../../../../../dist/include/view -I../../../../../d ist/include/necko -I../../../../../dist/include/pref -I../../../../../dist/include/webbrwsr -I../../ ../../../dist/include/docshell -I../../../../../dist/include/dom -I../../../../../dist/include/urilo ader -I../../../../../dist/include/layout -I../../../../../dist/include/content -I../../../../../dis t/include/editor -I../../../../../dist/include/webshell -I../../../../../dist/include/profile -I../. ./../../../dist/include/embed_base -I../../../../../dist/include/necko -I../../../../../dist/include /windowwatcher -I../../../../../dist/include/webbrowserpersist -I../../../../../dist/include/helperA ppDlg -I../../../../../dist/include/exthandler -I../../../../../dist/include/mimetype -I../../../../ ../dist/include/composer -I../../../../../dist/include/commandhandler -I../../../../../dist/include/ ax_common -I../../../../../dist/include -I../../../../../dist/include -I../../../../../dist/include/ nspr -TP -nologo -W3 -nologo -Gy -Fdmozctl.pdb -DNDEBUG -DTRIMMED -Zi -O1 -UDEBUG -DNDEBUG /D WIN32 /GX /U ClientWallet -MD -DX_DISPLAY_MISSING=1 -DMOZILLA_VERSION="1.7b" -DHAVE_SNPRINTF=1 -D_WINDOWS= 1 -D_WIN32=1 -DWIN32=1 -DXP_WIN=1 -DXP_WIN32=1 -DHW_THREADS=1 -DWINVER=0x400 -DSTDC_HEADERS=1 -DWIN3 2_LEAN_AND_MEAN=1 -DNO_X11=1 -D_X86_=1 -DD_INO=d_ino -DMOZ_DEFAULT_TOOLKIT="windows" -DMOZ_APP_NAME= "mozilla" -DOJI=1 -DIBMBIDI=1 -DMOZ_VIEW_SOURCE=1 -DACCESSIBILITY=1 -DMOZ_XPINSTALL=1 -DMOZ_JSLOADER =1 -DMOZ_MATHML=1 -DMOZ_LOGGING=1 -DMOZ_USER_DIR="Mozilla" -DMOZ_XUL=1 -DMOZ_PROFILESHARING=1 -DMOZ_ PROFILELOCKING=1 -DMOZ_DLL_SUFFIX=".dll" -DJS_THREADSAFE=1 -DNS_PRINT_PREVIEW=1 -DNS_PRINTING=1 -DMO ZILLA_LOCALE_VERSION="1.7b" -DMOZILLA_REGION_VERSION="1.7b" -DMOZILLA_SKIN_VERSION="1.5" -D_MOZILLA_ CONFIG_H_ -DMOZILLA_CLIENT /cygdrive/c/mozilla-build/source/seamonkey-1.7rc1/mozilla/embedding/brows er/activex/src/control/StdAfx.cpp make[1]: *** [StdAfx.obj] Error 1 make: *** [all] Error 2
Attachment #145093 - Flags: review?(adamlock)
(In reply to comment #4) > Can the control simply inherit from the CComCompositeControl instead of > CComControl? I don't remember exactly why I just took PreTranslateAccelarator out of CComCompositeControl, but it may have something to do with the fact that a CComCompositeControl is supposed to have other ActiveX controls in it, whereas in our case we don't have this: we have widgets inside (not even Windows window handles).
Comment on attachment 145093 [details] [diff] [review] PreTranslateAccelarator taken from CComCompositeControl in AtlCtl.h CComCompositeControl houses other windows using a dialog resource. It would probably cause a lot more problems than it would solve. The patch looks okay though
Attachment #145093 - Flags: review?(adamlock) → review+
Attachment #145093 - Flags: superreview?(jst)
Attachment #145093 - Flags: superreview?(jst) → superreview+
I'm going to believe that I'm seeing this bug in a real world scenario. Before 20040623XX, and now in Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8a3) Gecko/20040716 I can't tab between drop down lists and text fields in a < form > area. The easiest place to notice this is in the bill entry form at the http://www.wheresgeorge.com/ main page. If this is a different bug (wouldn't that be a switch!), let me know, and I'll open a new bug for it. I'm not certain the difficulty is specifically with Active X in my case, as I am dealing with a simple form.
(In reply to comment #7) > I'm going to believe that I'm seeing this bug in a real world scenario. Before > 20040623XX, and now in I should have said that tabbing to drop down lists, as well as check boxes, worked prior to 20040623XX, but stopped working at that time, and still don't work in the current nightly build for Mac. Random testing in http://www.livejournal.com/poll reveal that tabbing across radio buttons is also broken.
> Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8a3) Gecko/20040716 > Can you use an ActiveX with a Mac OS ?
(In reply to comment #9) > > Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8a3) Gecko/20040716 > > > > Can you use an ActiveX with a Mac OS ? I don't think so. However, if I'm seeing the tab key fail to function in regular forms, either we have two bugs going on here, or the problem isn't really in ActiveX. I can't tell if what I'm seeing is a separate bug, as I don't have a Windows system with which to compare.
(In reply to comment #10) > (In reply to comment #9) > Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8a3) Gecko/20040716 > I don't think so. However, if I'm seeing the tab key fail to function in regular > forms, either we have two bugs going on here, or the problem isn't really in > ActiveX. > > I can't tell if what I'm seeing is a separate bug, as I don't have a Windows > system with which to compare. I think you see something else: this is really only about the ActiveX
(In reply to comment #11) > (In reply to comment #10) > > (In reply to comment #9) > > Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8a3) Gecko/20040716 > > I don't think so. However, if I'm seeing the tab key fail to function in regular > > forms, either we have two bugs going on here, or the problem isn't really in > > ActiveX. > > > > I can't tell if what I'm seeing is a separate bug, as I don't have a Windows > > system with which to compare. > > I think you see something else: this is really only about the ActiveX I've opened 252226, then. Thanks for helping!
Summary: tab navigation broken in forms in Mozilla ActiveX control → [ActiveX] tab navigation broken in forms in control
Assignee: adamlock → nobody
QA Contact: dunn5557 → activex
This is an issue for me. I've am trying to embed gecko in an application written in Borland C++ Builder 5. I obtained the control from the xulrunner 1.9.0.7 release. Since I did not want to compile my own version of gecko, I did the equivalent of the PreTranslateAccelarator patch but in my own application. Below is the relevant snippet of code from my application's message handling loop in case anyone else finds it useful: if ( Msg.message >= WM_KEYFIRST && Msg.message <= WM_KEYLAST && ( Msg.wParam == VK_TAB || Msg.wParam == VK_LEFT || Msg.wParam == VK_RIGHT || Msg.wParam == VK_UP || Msg.wParam == VK_DOWN || Msg.wParam == VK_HOME || Msg.wParam == VK_END || Msg.wParam == VK_PRIOR || Msg.wParam == VK_NEXT ) ) { SendMessage( GetFocus(), Msg.message, Msg.wParam, Msg.lParam ); Handled = true; Msg.message = NULL; }
The ActiveX embedding API was removed in bug 662023 and friends, making this INVALID. [Filter bugspam on activexinvalid]
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → INVALID
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: