Inside embeded gtk mozilla apps (like TestGtk) spanish charactor composition does not work. The problem lies in nsWidget.cpp's GetShellWidget() function. In several places an attempt is made to get mIMEShellWidget using GetShellWidget, but GetShellWidget() returns null in all cases since it is working under the assumption that the toplevel window of the app is an nsWidget (which is not the case for an embeded mozilla app). The is a loop in GetShellWidget() that walks up the window tree to find an nsWidget that has it's mIsTopLevel member set to true. I can change to loop to just find top most window and spanish composition works fine. Although, I really don't understand what we are really tring to do in this code so I fear some bad side affects will come of my hack.
An easy way to reproduce this bug is to just run TestGtk (using a debug build) and visit yahoo. When you type into the search text input field you will notice a bunch of assertions printed to stderr for: ###!!! ASSERTION: GetShellWidget() fails: 'mIMEShellWidget', file nsWidget.cpp, line 2843 ###!!! Break: at file nsWidget.cpp, line 2843 If you are just typing in english which doesn't have to do any funky key compination stuff then all is well. I know the spanish key compinations don't work and I sure that all other languages will be broke. So now I am wondering if it should be the job of the embeding application to mark the top most nsWindow as toplevel. So for example, gtk_moz_embed_new() would not only create the new embeded mozilla widget, but also find the top gdk window, walk down to the eventual nsWindow and then set mIsTopLevel to true.
Assignee: pavlov → tajima
This problem is dup of http://bugzilla.mozilla.org/show_bug.cgi?id=50130.
Dup of bug 50130. I've checked in the fix right now as bug 53989. Toshi, can you mark this as DUP of bug 50130? firstname.lastname@example.org, can you try on tomorrow's build?
Assignee: tajima → katakai
Status: ASSIGNED → NEW
Status: NEW → RESOLVED
Last Resolved: 17 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.