You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Harbs <ha...@gmail.com> on 2015/08/31 10:59:24 UTC

TLF IME

It looks to me that IME is completely broken in the recent versions of TLF. It seems to work in Firefox and Safari on Mac (at least at the bottom of the screen), but does not work in Chrome on Mac or any browser on Windows.

Has anyone else noticed this?

Harbs

Re: TLF IME

Posted by Alex Harui <ah...@adobe.com>.

On 9/10/15, 7:05 AM, "Harbs" <ha...@gmail.com> wrote:

>Sure. But even if the focus is not going to be handled by FocusManager,
>why is it disabling the IME mode?

I don’t have a clear recollection of why the code looks like this.  I’d
have to go digging through the commits to see if it would jog my memory if
you are really curious, but I think the idea was that in Flex apps, the
IME would be disabled except for controls where you wanted it on.  Maybe
having to do with numbers-only inputs, or maybe the IME started showing up
on checkboxes.  Not sure.

-Alex

>
>In my case, setting the focus was probably a mistake. If there’s no
>focusable objects, shouldn’t the FocusManager fail silently?

Not sure I understood that, but IMO it would be extremely rare for a Flex
app to not have focusable objects.

-Alex


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
Sure. But even if the focus is not going to be handled by FocusManager, why is it disabling the IME mode?

In my case, setting the focus was probably a mistake. If there’s no focusable objects, shouldn’t the FocusManager fail silently?

On Sep 10, 2015, at 4:19 PM, Alex Harui <ah...@adobe.com> wrote:

> 
> On 9/10/15, 3:06 AM, "Harbs" <ha...@gmail.com> wrote:
> 
>> But if a component implements IIMESupport, why should the FocusManager
>> turn off IME if it does not implement IFocusManagerComponent?
>> 
>> It seems to me that the code should be something like this (which also
>> has the advantage of being clearer and more concise):
>> 
>> _lastFocus = findFocusManagerComponent(InteractiveObject(target));
>> if (Capabilities.hasIME && IMEEnabled)
>> {
>>   if (_lastFocus is IIMESupport)
>>   	IME.enabled = (_lastFocus as IIMESupport).enableIME;
>> 
>>   else if (target is IIMESupport)
>>   	IME.enabled = (target as IIMESupport).enableIME;
>> 
>>   else
>>   	IME.enabled = false;
>> 
>> }
>> 
>> Am I missing something?
> 
> Well, IMO, frameworks have rules, like all “components” must implement
> IUIComponent, and in this case, all focusable “components” must implement
> IFocusManagerComponent (for other reasons, like handling focus correctly
> for “grouped focus” like radio buttons, “sub-focus” for popups, or
> handling disabled states, really complex nesting of focusable editors in
> DataGrid, accessibility/screen-readers, etc.  Essentially all of that code
> in FocusManager that wrestles with the default player focus behavior.  And
> so if every focusable “component” does implement IFocusManagerComponent
> correctly, then I think you don’t need the two lines you are suggesting.
> The two lines add tolerance for focus in non-IFocusManagerComponents, but
> there might be confusion and trouble elsewhere when you try to allow this
> sort of tolerance.  I don’t object to attempts to allow more tolerance,
> but I think it can turn out to be a lot of work.
> 
> -Alex


Re: TLF IME

Posted by Alex Harui <ah...@adobe.com>.
On 9/10/15, 3:06 AM, "Harbs" <ha...@gmail.com> wrote:

>But if a component implements IIMESupport, why should the FocusManager
>turn off IME if it does not implement IFocusManagerComponent?
>
>It seems to me that the code should be something like this (which also
>has the advantage of being clearer and more concise):
>
>_lastFocus = findFocusManagerComponent(InteractiveObject(target));
>if (Capabilities.hasIME && IMEEnabled)
>{
>    if (_lastFocus is IIMESupport)
>    	IME.enabled = (_lastFocus as IIMESupport).enableIME;
>
>    else if (target is IIMESupport)
>    	IME.enabled = (target as IIMESupport).enableIME;
>
>    else
>    	IME.enabled = false;
>
>}
>
>Am I missing something?

Well, IMO, frameworks have rules, like all “components” must implement
IUIComponent, and in this case, all focusable “components” must implement
IFocusManagerComponent (for other reasons, like handling focus correctly
for “grouped focus” like radio buttons, “sub-focus” for popups, or
handling disabled states, really complex nesting of focusable editors in
DataGrid, accessibility/screen-readers, etc.  Essentially all of that code
in FocusManager that wrestles with the default player focus behavior.  And
so if every focusable “component” does implement IFocusManagerComponent
correctly, then I think you don’t need the two lines you are suggesting.
The two lines add tolerance for focus in non-IFocusManagerComponents, but
there might be confusion and trouble elsewhere when you try to allow this
sort of tolerance.  I don’t object to attempts to allow more tolerance,
but I think it can turn out to be a lot of work.

-Alex



Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
But if a component implements IIMESupport, why should the FocusManager turn off IME if it does not implement IFocusManagerComponent?

It seems to me that the code should be something like this (which also has the advantage of being clearer and more concise):

_lastFocus = findFocusManagerComponent(InteractiveObject(target));
if (Capabilities.hasIME && IMEEnabled)
{
    if (_lastFocus is IIMESupport)
    	IME.enabled = (_lastFocus as IIMESupport).enableIME;

    else if (target is IIMESupport)
    	IME.enabled = (target as IIMESupport).enableIME;

    else
    	IME.enabled = false;

}

Am I missing something?

On Sep 10, 2015, at 1:07 AM, Alex Harui <ah...@adobe.com> wrote:

> Yep, that’s the point of IFocusManagerComponent.  The thing we think of as
> the component rarely has focus.  Even a TextInput wraps the TextField or
> RichTextEditor.
> 
> -Alex
> 
> On 9/9/15, 2:42 PM, "Harbs" <ha...@gmail.com> wrote:
> 
>> Of course, the component does not handle focus itself. That’s handled by
>> the SelectionManager…
>> 
>> On Sep 10, 2015, at 12:41 AM, Harbs <ha...@gmail.com> wrote:
>> 
>>> Apparently, the way to go would have been to implement
>>> IFocusManagerComponent as well…
>>> 
>>> On Sep 10, 2015, at 12:37 AM, Harbs <ha...@gmail.com> wrote:
>>> 
>>>> Here’s the full class that’s the target:
>>>> 
>>>> 	public class TLFContainer extends SpriteVisualElement implements
>>>> IIMESupport
>>>> 	{
>>>> 		private var _imeMode:String;
>>>> 		
>>>> 		public function TLFContainer()
>>>> 		{
>>>> 			super();
>>>> 		}
>>>> 		
>>>> 		public function get enableIME():Boolean{
>>>> 			return true;
>>>> 		}
>>>> 		
>>>> 		public function get imeMode():String{
>>>> 			return _imeMode;
>>>> 		}
>>>> 		
>>>> 		public function set imeMode(value:String):void{
>>>> 			_imeMode = value;
>>>> 			
>>>> 		}
>>>> 
>>>> It’s used as the text container of the ContainerController.
>>>> 
>>>> On Sep 10, 2015, at 12:34 AM, Alex Harui <ah...@adobe.com> wrote:
>>>> 
>>>>> What is target?  findFocusManagerComponent does a walk up the tree
>>>>> looking
>>>>> for certain flags.
>>>>> 
>>>>> -Alex
>>>>> 
>>>>> On 9/9/15, 2:31 PM, "Harbs" <ha...@gmail.com> wrote:
>>>>> 
>>>>>> I found the culprit: FocusManager.
>>>>>> 
>>>>>> It has the following code:
>>>>>>          _lastFocus =
>>>>>> findFocusManagerComponent(InteractiveObject(target));
>>>>>> 
>>>>>> 	if (Capabilities.hasIME)
>>>>>>          {
>>>>>>              var usesIME:Boolean;
>>>>>>              if (_lastFocus is IIMESupport)
>>>>>>              {
>>>>>>                  var imeFocus:IIMESupport = IIMESupport(_lastFocus);
>>>>>>                  if (imeFocus.enableIME)
>>>>>>                      usesIME = true;
>>>>>>              }
>>>>>>              if (IMEEnabled)
>>>>>>                  IME.enabled = usesIME;
>>>>>>          }
>>>>>> 
>>>>>> In my case _lastFocus was null. target does implement IIMESupport
>>>>>> but it
>>>>>> apparently could not be found by findFocusManagerComponent().
>>>>>> 
>>>>>> On Sep 3, 2015, at 3:19 PM, Harbs <ha...@gmail.com> wrote:
>>>>>> 
>>>>>>> FWIW, I did not figure out what was disabling the IME.
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: TLF IME

Posted by Alex Harui <ah...@adobe.com>.
Yep, that’s the point of IFocusManagerComponent.  The thing we think of as
the component rarely has focus.  Even a TextInput wraps the TextField or
RichTextEditor.

-Alex

On 9/9/15, 2:42 PM, "Harbs" <ha...@gmail.com> wrote:

>Of course, the component does not handle focus itself. That’s handled by
>the SelectionManager…
>
>On Sep 10, 2015, at 12:41 AM, Harbs <ha...@gmail.com> wrote:
>
>> Apparently, the way to go would have been to implement
>>IFocusManagerComponent as well…
>> 
>> On Sep 10, 2015, at 12:37 AM, Harbs <ha...@gmail.com> wrote:
>> 
>>> Here’s the full class that’s the target:
>>> 
>>> 	public class TLFContainer extends SpriteVisualElement implements
>>>IIMESupport
>>> 	{
>>> 		private var _imeMode:String;
>>> 		
>>> 		public function TLFContainer()
>>> 		{
>>> 			super();
>>> 		}
>>> 		
>>> 		public function get enableIME():Boolean{
>>> 			return true;
>>> 		}
>>> 		
>>> 		public function get imeMode():String{
>>> 			return _imeMode;
>>> 		}
>>> 		
>>> 		public function set imeMode(value:String):void{
>>> 			_imeMode = value;
>>> 			
>>> 		}
>>> 
>>> It’s used as the text container of the ContainerController.
>>> 
>>> On Sep 10, 2015, at 12:34 AM, Alex Harui <ah...@adobe.com> wrote:
>>> 
>>>> What is target?  findFocusManagerComponent does a walk up the tree
>>>>looking
>>>> for certain flags.
>>>> 
>>>> -Alex
>>>> 
>>>> On 9/9/15, 2:31 PM, "Harbs" <ha...@gmail.com> wrote:
>>>> 
>>>>> I found the culprit: FocusManager.
>>>>> 
>>>>> It has the following code:
>>>>>           _lastFocus =
>>>>> findFocusManagerComponent(InteractiveObject(target));
>>>>> 
>>>>> 	if (Capabilities.hasIME)
>>>>>           {
>>>>>               var usesIME:Boolean;
>>>>>               if (_lastFocus is IIMESupport)
>>>>>               {
>>>>>                   var imeFocus:IIMESupport = IIMESupport(_lastFocus);
>>>>>                   if (imeFocus.enableIME)
>>>>>                       usesIME = true;
>>>>>               }
>>>>>               if (IMEEnabled)
>>>>>                   IME.enabled = usesIME;
>>>>>           }
>>>>> 
>>>>> In my case _lastFocus was null. target does implement IIMESupport
>>>>>but it
>>>>> apparently could not be found by findFocusManagerComponent().
>>>>> 
>>>>> On Sep 3, 2015, at 3:19 PM, Harbs <ha...@gmail.com> wrote:
>>>>> 
>>>>>> FWIW, I did not figure out what was disabling the IME.
>>>>> 
>>>> 
>>> 
>> 
>


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
Of course, the component does not handle focus itself. That’s handled by the SelectionManager…

On Sep 10, 2015, at 12:41 AM, Harbs <ha...@gmail.com> wrote:

> Apparently, the way to go would have been to implement IFocusManagerComponent as well…
> 
> On Sep 10, 2015, at 12:37 AM, Harbs <ha...@gmail.com> wrote:
> 
>> Here’s the full class that’s the target:
>> 
>> 	public class TLFContainer extends SpriteVisualElement implements IIMESupport
>> 	{
>> 		private var _imeMode:String;
>> 		
>> 		public function TLFContainer()
>> 		{
>> 			super();
>> 		}
>> 		
>> 		public function get enableIME():Boolean{
>> 			return true;
>> 		}
>> 		
>> 		public function get imeMode():String{
>> 			return _imeMode;
>> 		}
>> 		
>> 		public function set imeMode(value:String):void{
>> 			_imeMode = value;
>> 			
>> 		}
>> 
>> It’s used as the text container of the ContainerController.
>> 
>> On Sep 10, 2015, at 12:34 AM, Alex Harui <ah...@adobe.com> wrote:
>> 
>>> What is target?  findFocusManagerComponent does a walk up the tree looking
>>> for certain flags.
>>> 
>>> -Alex
>>> 
>>> On 9/9/15, 2:31 PM, "Harbs" <ha...@gmail.com> wrote:
>>> 
>>>> I found the culprit: FocusManager.
>>>> 
>>>> It has the following code:
>>>>           _lastFocus =
>>>> findFocusManagerComponent(InteractiveObject(target));
>>>> 
>>>> 	if (Capabilities.hasIME)
>>>>           {
>>>>               var usesIME:Boolean;
>>>>               if (_lastFocus is IIMESupport)
>>>>               {
>>>>                   var imeFocus:IIMESupport = IIMESupport(_lastFocus);
>>>>                   if (imeFocus.enableIME)
>>>>                       usesIME = true;
>>>>               }
>>>>               if (IMEEnabled)
>>>>                   IME.enabled = usesIME;
>>>>           }
>>>> 
>>>> In my case _lastFocus was null. target does implement IIMESupport but it
>>>> apparently could not be found by findFocusManagerComponent().
>>>> 
>>>> On Sep 3, 2015, at 3:19 PM, Harbs <ha...@gmail.com> wrote:
>>>> 
>>>>> FWIW, I did not figure out what was disabling the IME.
>>>> 
>>> 
>> 
> 


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
Apparently, the way to go would have been to implement IFocusManagerComponent as well…

On Sep 10, 2015, at 12:37 AM, Harbs <ha...@gmail.com> wrote:

> Here’s the full class that’s the target:
> 
> 	public class TLFContainer extends SpriteVisualElement implements IIMESupport
> 	{
> 		private var _imeMode:String;
> 		
> 		public function TLFContainer()
> 		{
> 			super();
> 		}
> 		
> 		public function get enableIME():Boolean{
> 			return true;
> 		}
> 		
> 		public function get imeMode():String{
> 			return _imeMode;
> 		}
> 		
> 		public function set imeMode(value:String):void{
> 			_imeMode = value;
> 			
> 		}
> 
> It’s used as the text container of the ContainerController.
> 
> On Sep 10, 2015, at 12:34 AM, Alex Harui <ah...@adobe.com> wrote:
> 
>> What is target?  findFocusManagerComponent does a walk up the tree looking
>> for certain flags.
>> 
>> -Alex
>> 
>> On 9/9/15, 2:31 PM, "Harbs" <ha...@gmail.com> wrote:
>> 
>>> I found the culprit: FocusManager.
>>> 
>>> It has the following code:
>>>           _lastFocus =
>>> findFocusManagerComponent(InteractiveObject(target));
>>> 
>>> 	if (Capabilities.hasIME)
>>>           {
>>>               var usesIME:Boolean;
>>>               if (_lastFocus is IIMESupport)
>>>               {
>>>                   var imeFocus:IIMESupport = IIMESupport(_lastFocus);
>>>                   if (imeFocus.enableIME)
>>>                       usesIME = true;
>>>               }
>>>               if (IMEEnabled)
>>>                   IME.enabled = usesIME;
>>>           }
>>> 
>>> In my case _lastFocus was null. target does implement IIMESupport but it
>>> apparently could not be found by findFocusManagerComponent().
>>> 
>>> On Sep 3, 2015, at 3:19 PM, Harbs <ha...@gmail.com> wrote:
>>> 
>>>> FWIW, I did not figure out what was disabling the IME.
>>> 
>> 
> 


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
Here’s the full class that’s the target:

	public class TLFContainer extends SpriteVisualElement implements IIMESupport
	{
		private var _imeMode:String;
		
		public function TLFContainer()
		{
			super();
		}
		
		public function get enableIME():Boolean{
			return true;
		}
		
		public function get imeMode():String{
			return _imeMode;
		}
		
		public function set imeMode(value:String):void{
			_imeMode = value;
			
		}

It’s used as the text container of the ContainerController.

On Sep 10, 2015, at 12:34 AM, Alex Harui <ah...@adobe.com> wrote:

> What is target?  findFocusManagerComponent does a walk up the tree looking
> for certain flags.
> 
> -Alex
> 
> On 9/9/15, 2:31 PM, "Harbs" <ha...@gmail.com> wrote:
> 
>> I found the culprit: FocusManager.
>> 
>> It has the following code:
>>           _lastFocus =
>> findFocusManagerComponent(InteractiveObject(target));
>> 
>> 	if (Capabilities.hasIME)
>>           {
>>               var usesIME:Boolean;
>>               if (_lastFocus is IIMESupport)
>>               {
>>                   var imeFocus:IIMESupport = IIMESupport(_lastFocus);
>>                   if (imeFocus.enableIME)
>>                       usesIME = true;
>>               }
>>               if (IMEEnabled)
>>                   IME.enabled = usesIME;
>>           }
>> 
>> In my case _lastFocus was null. target does implement IIMESupport but it
>> apparently could not be found by findFocusManagerComponent().
>> 
>> On Sep 3, 2015, at 3:19 PM, Harbs <ha...@gmail.com> wrote:
>> 
>>> FWIW, I did not figure out what was disabling the IME.
>> 
> 


Re: TLF IME

Posted by Alex Harui <ah...@adobe.com>.
What is target?  findFocusManagerComponent does a walk up the tree looking
for certain flags.

-Alex

On 9/9/15, 2:31 PM, "Harbs" <ha...@gmail.com> wrote:

>I found the culprit: FocusManager.
>
>It has the following code:
>            _lastFocus =
>findFocusManagerComponent(InteractiveObject(target));
>
>	if (Capabilities.hasIME)
>            {
>                var usesIME:Boolean;
>                if (_lastFocus is IIMESupport)
>                {
>                    var imeFocus:IIMESupport = IIMESupport(_lastFocus);
>                    if (imeFocus.enableIME)
>                        usesIME = true;
>                }
>                if (IMEEnabled)
>                    IME.enabled = usesIME;
>            }
>
>In my case _lastFocus was null. target does implement IIMESupport but it
>apparently could not be found by findFocusManagerComponent().
>
>On Sep 3, 2015, at 3:19 PM, Harbs <ha...@gmail.com> wrote:
>
>> FWIW, I did not figure out what was disabling the IME.
>


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
I found the culprit: FocusManager.

It has the following code:
            _lastFocus = findFocusManagerComponent(InteractiveObject(target));

	if (Capabilities.hasIME)
            {
                var usesIME:Boolean;
                if (_lastFocus is IIMESupport)
                {
                    var imeFocus:IIMESupport = IIMESupport(_lastFocus);
                    if (imeFocus.enableIME)
                        usesIME = true;
                }
                if (IMEEnabled)
                    IME.enabled = usesIME;
            }

In my case _lastFocus was null. target does implement IIMESupport but it apparently could not be found by findFocusManagerComponent().

On Sep 3, 2015, at 3:19 PM, Harbs <ha...@gmail.com> wrote:

> FWIW, I did not figure out what was disabling the IME.


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
FWIW, I did not figure out what was disabling the IME.

I did figure out how to get the IME working though. When the TextFlow gets focus, I just added IME.enabled = true;

For the sake of completeness I’m documenting my observations of IME behavior:

IME works inline on all Windows browsers and in Chrome on Mac. On Mac Firefox and Safari, it shows up in a dialog on the bottom of the screen. I have not checked other browsers. It’s worthy of note that I had my issues on browsers where IME is inline. I still have a suspicion that something changed in the Flash plugin, but since things are working again, I’m happy leaving good enough alone.

On Sep 2, 2015, at 6:44 PM, Alex Harui <ah...@adobe.com> wrote:

> Can you switch back to Adobe Flex 4.6?  Or whatever version of Apache Flex
> was before we started deferring focus changes to TextInputs?
> 
> -Alex
> 
> On 9/2/15, 2:29 AM, "Harbs" <ha...@gmail.com> wrote:
> 
>> Neither of those two seem to be in use. I’m exploring other focus
>> redirecting possibilities, but so far no luck…
>> 
>> On Sep 2, 2015, at 8:03 AM, Alex Harui <ah...@adobe.com> wrote:
>> 
>>> IIRC, there can be issues if parent display objects have tabEnabled
>>> and/or
>>> tabChildren set to false.
>>> 
>>> -Alex
>>> 
>>> On 9/1/15, 9:32 AM, "Harbs" <ha...@gmail.com> wrote:
>>> 
>>>> OK.
>>>> 
>>>> I just put together a non-Flex case and it seems to work in all three
>>>> Mac
>>>> browsers:
>>>> 
>>>> package
>>>> {
>>>> 	import flash.display.Sprite;
>>>> 	import flash.system.Capabilities;
>>>> 	import flash.system.IME;
>>>> 	import flash.text.TextField;
>>>> 	import flash.text.TextFieldType;
>>>> 	
>>>> 	public class IMETest extends Sprite
>>>> 	{
>>>> 		public function IMETest()
>>>> 		{
>>>> 			if (Capabilities.hasIME)
>>>> 			{ 
>>>> 				IME.enabled = true;
>>>> 			} 
>>>> 			tField.type = TextFieldType.INPUT;
>>>> 			tField.width = 100;
>>>> 			tField.height = 18;
>>>> 			tField.background = true;
>>>> 			tField.border = true;
>>>> 			addChild(tField);
>>>> 
>>>> 		}
>>>> 		private var tField:TextField = new TextField();
>>>> 		
>>>> 	}
>>>> }
>>>> 
>>>> So, I guess there is a Flex problem here…
>>>> Things are clearly more complicated than I thought, because this works
>>>> in
>>>> all browsers (on Mac).
>>>> 
>>>> <?xml version="1.0" encoding="utf-8"?>
>>>> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
>>>> 			   xmlns:s="library://ns.adobe.com/flex/spark"
>>>> 			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
>>>> minHeight="600" backgroundColor="#FFFF00" backgroundAlpha="0.5">
>>>> 	<fx:Declarations>
>>>> 		<!-- Place non-visual elements (e.g., services, value objects) here
>>>> -->
>>>> 	</fx:Declarations>
>>>> 	<s:RichEditableText text="Some text here..." editable="true"
>>>> width="200"
>>>> height="50" backgroundColor="#FFFFFF"/>
>>>> </s:Application>
>>>> 
>>>> Thanks for pointing me in the right direction. I’ll have to figure out
>>>> why it’s not working in my app…
>>>> 
>>>> On Sep 1, 2015, at 6:05 PM, Alex Harui <ah...@adobe.com> wrote:
>>>> 
>>>>> First, build a non-Flex test case.  Then file that test case at
>>>>> bugbase.adobe.com.
>>>>> 
>>>>> -Alex
>>>>> 
>>>>> On 9/1/15, 7:48 AM, "Harbs" <ha...@gmail.com> wrote:
>>>>> 
>>>>>> I’m not sure if this is a TLF issue or a Flash player issue.
>>>>>> 
>>>>>> I’m getting different results in different browsers. Who would we
>>>>>> contact
>>>>>> at Adobe to report this issue in Flash?
>>>>>> 
>>>>>> On Aug 31, 2015, at 11:59 AM, Harbs <ha...@gmail.com> wrote:
>>>>>> 
>>>>>>> It looks to me that IME is completely broken in the recent versions
>>>>>>> of
>>>>>>> TLF. It seems to work in Firefox and Safari on Mac (at least at the
>>>>>>> bottom of the screen), but does not work in Chrome on Mac or any
>>>>>>> browser
>>>>>>> on Windows.
>>>>>>> 
>>>>>>> Has anyone else noticed this?
>>>>>>> 
>>>>>>> Harbs
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 


Re: TLF IME

Posted by Alex Harui <ah...@adobe.com>.
Can you switch back to Adobe Flex 4.6?  Or whatever version of Apache Flex
was before we started deferring focus changes to TextInputs?

-Alex

On 9/2/15, 2:29 AM, "Harbs" <ha...@gmail.com> wrote:

>Neither of those two seem to be in use. I’m exploring other focus
>redirecting possibilities, but so far no luck…
>
>On Sep 2, 2015, at 8:03 AM, Alex Harui <ah...@adobe.com> wrote:
>
>> IIRC, there can be issues if parent display objects have tabEnabled
>>and/or
>> tabChildren set to false.
>> 
>> -Alex
>> 
>> On 9/1/15, 9:32 AM, "Harbs" <ha...@gmail.com> wrote:
>> 
>>> OK.
>>> 
>>> I just put together a non-Flex case and it seems to work in all three
>>>Mac
>>> browsers:
>>> 
>>> package
>>> {
>>> 	import flash.display.Sprite;
>>> 	import flash.system.Capabilities;
>>> 	import flash.system.IME;
>>> 	import flash.text.TextField;
>>> 	import flash.text.TextFieldType;
>>> 	
>>> 	public class IMETest extends Sprite
>>> 	{
>>> 		public function IMETest()
>>> 		{
>>> 			if (Capabilities.hasIME)
>>> 			{ 
>>> 				IME.enabled = true;
>>> 			} 
>>> 			tField.type = TextFieldType.INPUT;
>>> 			tField.width = 100;
>>> 			tField.height = 18;
>>> 			tField.background = true;
>>> 			tField.border = true;
>>> 			addChild(tField);
>>> 
>>> 		}
>>> 		private var tField:TextField = new TextField();
>>> 		
>>> 	}
>>> }
>>> 
>>> So, I guess there is a Flex problem here…
>>> Things are clearly more complicated than I thought, because this works
>>>in
>>> all browsers (on Mac).
>>> 
>>> <?xml version="1.0" encoding="utf-8"?>
>>> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
>>> 			   xmlns:s="library://ns.adobe.com/flex/spark"
>>> 			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
>>> minHeight="600" backgroundColor="#FFFF00" backgroundAlpha="0.5">
>>> 	<fx:Declarations>
>>> 		<!-- Place non-visual elements (e.g., services, value objects) here
>>>-->
>>> 	</fx:Declarations>
>>> 	<s:RichEditableText text="Some text here..." editable="true"
>>>width="200"
>>> height="50" backgroundColor="#FFFFFF"/>
>>> </s:Application>
>>> 
>>> Thanks for pointing me in the right direction. I’ll have to figure out
>>> why it’s not working in my app…
>>> 
>>> On Sep 1, 2015, at 6:05 PM, Alex Harui <ah...@adobe.com> wrote:
>>> 
>>>> First, build a non-Flex test case.  Then file that test case at
>>>> bugbase.adobe.com.
>>>> 
>>>> -Alex
>>>> 
>>>> On 9/1/15, 7:48 AM, "Harbs" <ha...@gmail.com> wrote:
>>>> 
>>>>> I’m not sure if this is a TLF issue or a Flash player issue.
>>>>> 
>>>>> I’m getting different results in different browsers. Who would we
>>>>> contact
>>>>> at Adobe to report this issue in Flash?
>>>>> 
>>>>> On Aug 31, 2015, at 11:59 AM, Harbs <ha...@gmail.com> wrote:
>>>>> 
>>>>>> It looks to me that IME is completely broken in the recent versions
>>>>>>of
>>>>>> TLF. It seems to work in Firefox and Safari on Mac (at least at the
>>>>>> bottom of the screen), but does not work in Chrome on Mac or any
>>>>>> browser
>>>>>> on Windows.
>>>>>> 
>>>>>> Has anyone else noticed this?
>>>>>> 
>>>>>> Harbs
>>>>> 
>>>> 
>>> 
>> 
>


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
Neither of those two seem to be in use. I’m exploring other focus redirecting possibilities, but so far no luck…

On Sep 2, 2015, at 8:03 AM, Alex Harui <ah...@adobe.com> wrote:

> IIRC, there can be issues if parent display objects have tabEnabled and/or
> tabChildren set to false.
> 
> -Alex
> 
> On 9/1/15, 9:32 AM, "Harbs" <ha...@gmail.com> wrote:
> 
>> OK.
>> 
>> I just put together a non-Flex case and it seems to work in all three Mac
>> browsers:
>> 
>> package
>> {
>> 	import flash.display.Sprite;
>> 	import flash.system.Capabilities;
>> 	import flash.system.IME;
>> 	import flash.text.TextField;
>> 	import flash.text.TextFieldType;
>> 	
>> 	public class IMETest extends Sprite
>> 	{
>> 		public function IMETest()
>> 		{
>> 			if (Capabilities.hasIME)
>> 			{ 
>> 				IME.enabled = true;
>> 			} 
>> 			tField.type = TextFieldType.INPUT;
>> 			tField.width = 100;
>> 			tField.height = 18;
>> 			tField.background = true;
>> 			tField.border = true;
>> 			addChild(tField);
>> 
>> 		}
>> 		private var tField:TextField = new TextField();
>> 		
>> 	}
>> }
>> 
>> So, I guess there is a Flex problem here…
>> Things are clearly more complicated than I thought, because this works in
>> all browsers (on Mac).
>> 
>> <?xml version="1.0" encoding="utf-8"?>
>> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
>> 			   xmlns:s="library://ns.adobe.com/flex/spark"
>> 			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
>> minHeight="600" backgroundColor="#FFFF00" backgroundAlpha="0.5">
>> 	<fx:Declarations>
>> 		<!-- Place non-visual elements (e.g., services, value objects) here -->
>> 	</fx:Declarations>
>> 	<s:RichEditableText text="Some text here..." editable="true" width="200"
>> height="50" backgroundColor="#FFFFFF"/>
>> </s:Application>
>> 
>> Thanks for pointing me in the right direction. I’ll have to figure out
>> why it’s not working in my app…
>> 
>> On Sep 1, 2015, at 6:05 PM, Alex Harui <ah...@adobe.com> wrote:
>> 
>>> First, build a non-Flex test case.  Then file that test case at
>>> bugbase.adobe.com.
>>> 
>>> -Alex
>>> 
>>> On 9/1/15, 7:48 AM, "Harbs" <ha...@gmail.com> wrote:
>>> 
>>>> I’m not sure if this is a TLF issue or a Flash player issue.
>>>> 
>>>> I’m getting different results in different browsers. Who would we
>>>> contact
>>>> at Adobe to report this issue in Flash?
>>>> 
>>>> On Aug 31, 2015, at 11:59 AM, Harbs <ha...@gmail.com> wrote:
>>>> 
>>>>> It looks to me that IME is completely broken in the recent versions of
>>>>> TLF. It seems to work in Firefox and Safari on Mac (at least at the
>>>>> bottom of the screen), but does not work in Chrome on Mac or any
>>>>> browser
>>>>> on Windows.
>>>>> 
>>>>> Has anyone else noticed this?
>>>>> 
>>>>> Harbs
>>>> 
>>> 
>> 
> 


Re: TLF IME

Posted by Alex Harui <ah...@adobe.com>.
IIRC, there can be issues if parent display objects have tabEnabled and/or
tabChildren set to false.

-Alex

On 9/1/15, 9:32 AM, "Harbs" <ha...@gmail.com> wrote:

>OK.
>
>I just put together a non-Flex case and it seems to work in all three Mac
>browsers:
>
>package
>{
>	import flash.display.Sprite;
>	import flash.system.Capabilities;
>	import flash.system.IME;
>	import flash.text.TextField;
>	import flash.text.TextFieldType;
>	
>	public class IMETest extends Sprite
>	{
>		public function IMETest()
>		{
>			if (Capabilities.hasIME)
>			{ 
>				IME.enabled = true;
>			} 
>			tField.type = TextFieldType.INPUT;
>			tField.width = 100;
>			tField.height = 18;
>			tField.background = true;
>			tField.border = true;
>			addChild(tField);
>
>		}
>		private var tField:TextField = new TextField();
>		
>	}
>}
>
>So, I guess there is a Flex problem here…
>Things are clearly more complicated than I thought, because this works in
>all browsers (on Mac).
>
><?xml version="1.0" encoding="utf-8"?>
><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
>			   xmlns:s="library://ns.adobe.com/flex/spark"
>			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
>minHeight="600" backgroundColor="#FFFF00" backgroundAlpha="0.5">
>	<fx:Declarations>
>		<!-- Place non-visual elements (e.g., services, value objects) here -->
>	</fx:Declarations>
>	<s:RichEditableText text="Some text here..." editable="true" width="200"
>height="50" backgroundColor="#FFFFFF"/>
></s:Application>
>
>Thanks for pointing me in the right direction. I’ll have to figure out
>why it’s not working in my app…
>
>On Sep 1, 2015, at 6:05 PM, Alex Harui <ah...@adobe.com> wrote:
>
>> First, build a non-Flex test case.  Then file that test case at
>> bugbase.adobe.com.
>> 
>> -Alex
>> 
>> On 9/1/15, 7:48 AM, "Harbs" <ha...@gmail.com> wrote:
>> 
>>> I’m not sure if this is a TLF issue or a Flash player issue.
>>> 
>>> I’m getting different results in different browsers. Who would we
>>>contact
>>> at Adobe to report this issue in Flash?
>>> 
>>> On Aug 31, 2015, at 11:59 AM, Harbs <ha...@gmail.com> wrote:
>>> 
>>>> It looks to me that IME is completely broken in the recent versions of
>>>> TLF. It seems to work in Firefox and Safari on Mac (at least at the
>>>> bottom of the screen), but does not work in Chrome on Mac or any
>>>>browser
>>>> on Windows.
>>>> 
>>>> Has anyone else noticed this?
>>>> 
>>>> Harbs
>>> 
>> 
>


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
OK.

I just put together a non-Flex case and it seems to work in all three Mac browsers:

package
{
	import flash.display.Sprite;
	import flash.system.Capabilities;
	import flash.system.IME;
	import flash.text.TextField;
	import flash.text.TextFieldType;
	
	public class IMETest extends Sprite
	{
		public function IMETest()
		{
			if (Capabilities.hasIME) 
			{ 
				IME.enabled = true; 
			} 
			tField.type = TextFieldType.INPUT; 
			tField.width = 100; 
			tField.height = 18; 
			tField.background = true; 
			tField.border = true; 
			addChild(tField); 

		}
		private var tField:TextField = new TextField(); 
		
	}
}

So, I guess there is a Flex problem here…
Things are clearly more complicated than I thought, because this works in all browsers (on Mac).

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" backgroundColor="#FFFF00" backgroundAlpha="0.5">
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	<s:RichEditableText text="Some text here..." editable="true" width="200" height="50" backgroundColor="#FFFFFF"/>
</s:Application>

Thanks for pointing me in the right direction. I’ll have to figure out why it’s not working in my app…

On Sep 1, 2015, at 6:05 PM, Alex Harui <ah...@adobe.com> wrote:

> First, build a non-Flex test case.  Then file that test case at
> bugbase.adobe.com.
> 
> -Alex
> 
> On 9/1/15, 7:48 AM, "Harbs" <ha...@gmail.com> wrote:
> 
>> I’m not sure if this is a TLF issue or a Flash player issue.
>> 
>> I’m getting different results in different browsers. Who would we contact
>> at Adobe to report this issue in Flash?
>> 
>> On Aug 31, 2015, at 11:59 AM, Harbs <ha...@gmail.com> wrote:
>> 
>>> It looks to me that IME is completely broken in the recent versions of
>>> TLF. It seems to work in Firefox and Safari on Mac (at least at the
>>> bottom of the screen), but does not work in Chrome on Mac or any browser
>>> on Windows.
>>> 
>>> Has anyone else noticed this?
>>> 
>>> Harbs
>> 
> 


Re: TLF IME

Posted by Alex Harui <ah...@adobe.com>.
First, build a non-Flex test case.  Then file that test case at
bugbase.adobe.com.

-Alex

On 9/1/15, 7:48 AM, "Harbs" <ha...@gmail.com> wrote:

>I’m not sure if this is a TLF issue or a Flash player issue.
>
>I’m getting different results in different browsers. Who would we contact
>at Adobe to report this issue in Flash?
>
>On Aug 31, 2015, at 11:59 AM, Harbs <ha...@gmail.com> wrote:
>
>> It looks to me that IME is completely broken in the recent versions of
>>TLF. It seems to work in Firefox and Safari on Mac (at least at the
>>bottom of the screen), but does not work in Chrome on Mac or any browser
>>on Windows.
>> 
>> Has anyone else noticed this?
>> 
>> Harbs
>


Re: TLF IME

Posted by Harbs <ha...@gmail.com>.
I’m not sure if this is a TLF issue or a Flash player issue.

I’m getting different results in different browsers. Who would we contact at Adobe to report this issue in Flash?

On Aug 31, 2015, at 11:59 AM, Harbs <ha...@gmail.com> wrote:

> It looks to me that IME is completely broken in the recent versions of TLF. It seems to work in Firefox and Safari on Mac (at least at the bottom of the screen), but does not work in Chrome on Mac or any browser on Windows.
> 
> Has anyone else noticed this?
> 
> Harbs