Firefox doesn't remember the input method (keyboard layout) per each window

RESOLVED INVALID

Status

()

Core
Widget: Win32
P5
enhancement
RESOLVED INVALID
2 years ago
a year ago

People

(Reporter: Stamimail, Unassigned)

Tracking

({inputmethod})

46 Branch
inputmethod
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: tpi:+)

(Reporter)

Description

2 years ago
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Build ID: 20160502172042

Steps to reproduce:

Who using more than one language for typing.
Please open 2 windows.
Let's say 2 windows of:
https://translate.google.com/

In one window try to type in one language, and on the other window try to type in the second language.

Please switch between the windows every word you typing


Actual results:

The language is not replaced automatically, according to the language was typed before in this window.
If you switch the language, the language is kept for all firefox windows, till you switch it again.


Expected results:

It's very very annoying behaviour. You find yourself fixing the typing all the time.

Open 2 Notepad windows (TXT), and see how it works there.
Firefox: 46.0.1, Build ID: 20160502172042
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0

I have tested this issue on the latest Firefox (46.0.1) release, latest Nightly (50.0a1 - 20160606131341) build and I have managed to reproduce it. I have opened 2 windows with Google translate, in the first window I wrote in Russian and in the second window I wrote in Arabic. I started to write in the first window (Russian) and when I switched to the second window (Arabic), the language was not automatically changed in Arabic. 
I have also tested with Notepad and IE and the language automatically changed when switching windows.  

However, if you use two different Firefox profiles, the issue is no longer reproducible. The language is automatically changed when switching windows.
Status: UNCONFIRMED → NEW
Component: Untriaged → Widget: Win32
Ever confirmed: true
Product: Firefox → Core

Updated

2 years ago
Severity: normal → enhancement
Priority: -- → P5
Whiteboard: tpi:+
(Reporter)

Comment 2

a year ago
>Who using more than one *language for typing.
*language = keyboard layout.
http://www.eightforums.com/attachments/tutorials/5846d1335330602-language-bar-turn-off-windows-8-a-input_indicator_icon.jpg
Keywords: inputmethod
Summary: Firefox doesn't keep the language of writing in each window → Firefox doesn't remember the input method (keyboard layout) per each window
The pref, "intl.keyboard.per_window_layout", doesn't work for you?
Flags: needinfo?(Stamimail)
(Reporter)

Comment 4

a year ago
I don't know what "intl.keyboard.per_window_layout" does.
The default was false. After changing it to True, still doesn't solve the problem.
You need to restart Firefox after changing it.
(Reporter)

Comment 6

a year ago
Did so. The same, no change.
I'm using version 49.0.1
(In reply to Stamimail from comment #6)
> Did so. The same, no change.
> I'm using version 49.0.1

It's odd. When I tested this in my environment at last week, it worked fine with Nightly (I'm using Mac now, so, I cannot test this right now). I'd like to know how about on the others.

Note that the default behavior, i.e., "intl.keyboard.per_window_layout" is false, is the standard behavior of Windows. Firefox's all windows are created by same process and with same IM context.

When the pref is true, each window instance stores the last keyboard layout/IME and when it becomes active, it sets active keyboard layout/IME to the stored keyboard layout. This was implemented by bug 186549 at Firefox 1.5.
(Reporter)

Comment 8

a year ago
I tested now in the last update of Firefox Developer Edition
51.0a2 (2016-10-18) (32-bit)
The same problem.
Is there a chance it is something to do with Hebrew versions of Firefox?
(In reply to Stamimail from comment #8)
> Is there a chance it is something to do with Hebrew versions of Firefox?

It doesn't depend on UI locale.
I retried to test this on Win7 with Firefox 49.0.1 with setting "intl.keyboard.per_window_layout" to true.

Then, I cannot reproduce this bug. I could type Cyrillic characters in a window and Arabic characters in the other window only with switching the windows.

If you can still reproduce without misunderstanding "intl.keyboard.per_window_layout" usage, I guess that your system (something like 3rd party's keyboard utilities) does something special.
(Reporter)

Comment 11

a year ago
https://dl.dropboxusercontent.com/u/12771184/ShareX/2016/10/Bug%201277815%20-%20Firefox%20doesn%27t%20remember%20the%20input%20method%20%28keyboard%20layout%29%20per%20each%20window.wmv

>If you can still reproduce without misunderstanding "intl.keyboard.per_window_layout" usage, I guess that your system (something like 3rd party's keyboard utilities) does something special.
I don't know about such third party utility.
(Reporter)

Comment 12

a year ago
Found. The Bug is with Tabs.
intl.keyboard.per_window_layout=true
does fix the problem but only for 2 windows, not for 2 tabs.
(In reply to Stamimail from comment #12)
> Found. The Bug is with Tabs.
> intl.keyboard.per_window_layout=true
> does fix the problem but only for 2 windows, not for 2 tabs.

It's impossible to separate keyboard layout management per tab. Does it works so on IE/Edge? They create focusable window per tab, but others, Chromium and Firefox, handles all native messages in the main process.

Anyway, starting Win8, the standard behavior is changed to that all processes share same keyboard layout (i.e., changing keyboard layout affects system-wide). So, we shouldn't add any complicated hack for a few users. (Managing active keyboard layout per window is also our hack, though, it was implemented for compatibility with Netscape Communicator/Navigator 4.x.)
Status: NEW → RESOLVED
Last Resolved: a year ago
Flags: needinfo?(Stamimail)
Resolution: --- → INVALID
(Reporter)

Comment 14

a year ago
I'm using FF on W7...
What am I going to do? I can not accept it.
Can you please give me a solution? hack as an Addon?
(In reply to Masayuki Nakano [:masayuki] (Mozilla Japan) from comment #13)
> (In reply to Stamimail from comment #12)
> It's impossible to separate keyboard layout management per tab. Does it
> works so on IE/Edge?

For the record, IE11 remembers the keyboard layout per tab on Win7 or Win8 with "Let me set a different input method for each app windows" checked. (Didn't test with Edge.)
(In reply to Stamimail from comment #14)
> I'm using FF on W7...
> What am I going to do? I can not accept it.
> Can you please give me a solution? hack as an Addon?

Nothing. For hacking this, you need to change WM_INPUTLANGCHANGE message handler's behavior. However, it's not exposed to JS (i.e., add-ons cannot touch around it).

(In reply to Masatoshi Kimura [:emk] from comment #15)
> (In reply to Masayuki Nakano [:masayuki] (Mozilla Japan) from comment #13)
> > (In reply to Stamimail from comment #12)
> > It's impossible to separate keyboard layout management per tab. Does it
> > works so on IE/Edge?
> 
> For the record, IE11 remembers the keyboard layout per tab on Win7 or Win8
> with "Let me set a different input method for each app windows" checked.

Although, I do that ;-) However, I believe that most users don't change such OS settings.

Anyway, if we'd implement such hack, we need to catch tab changes (and perhaps, we'd need to check domain or something the DOM window hierarchy of old tab and new tab, for example, window.opener etc). I don't think that we should implement such complicated code only for a few users. And we shouldn't use a lot of memory to store each tab's keyboard layout because we know some users open over a thousand tabs, a lot of users open 100 ~ 300 tabs (perhaps, we need to create a hashtable for storing each tab's keyboard layout?).
(Reporter)

Comment 17

a year ago
If not perfect, even partial solution would be good, it's very annoying.
(In reply to Stamimail from comment #17)
> If not perfect, even partial solution would be good, it's very annoying.

Although, IE and Edge work as you expected. Both Firefox and Google Chrome don't work as so. This difference is caused by the architecture of those browsers. IE and Edge receives events in each tab's process. But Firefox and Chrome receives all events in main process and sent abstract event to active tab's process. We cannot take IE/Edge's approach with a lot of reasons (both technically and developing costs).

Anyway, I've never seen this request after Mozilla creates tab browser since 2001...
(Reporter)

Comment 19

a year ago
I think my solution will be to make a shortcut key for: Move the current tab to New Window.
You need to log in before you can comment on or make changes to this bug.