Closed Bug 196898 Opened 22 years ago Closed 22 years ago

AIX: Calling gtk_realize_widget on a gtk_entry causes a root status window to come up

Categories

(SeaMonkey :: Themes, defect)

Other
AIX
defect
Not set
major

Tracking

(Not tracked)

VERIFIED FIXED
mozilla1.4alpha

People

(Reporter: pkwarren, Assigned: pkwarren)

References

Details

Attachments

(1 file)

Calling gtk_realize_widget on a gtk entry causes a root status window to come up on AIX in certain locales. If GTK is compiled with XIM support, then every gtk entry creates an input context. The problem shows up when the input context created is of style GDK_IM_STATUS_NOTHING | GDK_IM_PREEDIT_NOTHING. It looks like to support native Gtk themes, we create several copies of widgets and draw them manually (mozilla/gfx/src/gtk/gdkdrawing.c). We create a gtk entry in this file, and realize the widget, which causes a root status window to come up. Since this gtk entry is never destroyed and remains active the entire time Mozilla is running, the root status window for the widget also remains active. This is a problem because the root status window does not seem to be hooked into anything, as the gtk entry is not actually used to input text (just used for rendering the look of a native themed gtk entry), so the status window never changes. It is confusing to users to have a status area on screen that does not change when they change the input mode. I have a patch in hand which destroys the input context created by the gtk entry after it is destroyed. This prevents this inactive status window from remaining on screen.
Attached patch Patch v1Splinter Review
Status: NEW → ASSIGNED
Target Milestone: --- → mozilla1.4alpha
Attachment #116861 - Flags: review?(katakai)
Instead of gdk_ic_destroy(GTK_EDITABLE(gEntryWidget)->ic); GTK_EDITABLE(gEntryWidget)->ic = NULL; may we use gtk_entry_set_visibility(gEntryWidget, 0); May it have any negative impacts?
Please disregard comment 2!
Depends on: 195944
Attachment #116861 - Flags: superreview?(blizzard)
Comment on attachment 116861 [details] [diff] [review] Patch v1 I don't have any reasonable solution for this. The behavior of root window depends on IME and it seems that AIX's IME invokes root status window at IC creation. kinput2's root window is invoked whenever the IME is turned on. so this problem does not happen. (initial state is off) I've put r=katakai because this is only workarond, and this patch has been verified to work properly on AIX platform and the codes are in ifdef _AIX, no risk for other platforms. However, please work to fix your IME of AIX as well.
Attachment #116861 - Flags: review?(katakai) → review+
What is the behavior of Solaris, HP-UX, and other platforms with input style GDK_IM_STATUS_NOTHING | GDK_IM_PREEDIT_NOTHING? Is it similar to the behavior of kinput2 on Linux?
Solaris' XIM has also separate window for status display and preedit display. But these are not invoked when the ic does not have input focus. So this problem does not happen.
Blocks: 199964
No longer depends on: 195944
Comment on attachment 116861 [details] [diff] [review] Patch v1 sr=blizzard It's all ifdef _AIX anyway.
Attachment #116861 - Flags: superreview?(blizzard) → superreview+
Comment on attachment 116861 [details] [diff] [review] Patch v1 Requesting Mozilla 1.4 approval for an AIX specific change.
Attachment #116861 - Flags: approval1.4?
Comment on attachment 116861 [details] [diff] [review] Patch v1 a=asa (on behalf of drivers) for checkin to 1.4
Attachment #116861 - Flags: approval1.4? → approval1.4+
Fixed. Checking in gtkdrawing.c; /cvsroot/mozilla/gfx/src/gtk/gtkdrawing.c,v <-- gtkdrawing.c new revision: 1.32; previous revision: 1.31 done
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
verified code fix
Status: RESOLVED → VERIFIED
QA Contact: pmac → gbush
Product: Core → SeaMonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: