Hi Carlos, Now everything as it should be :)
1. Checked Jenkins to be sure to not apply the fix during another issue; 2. Fork refreshed; 3. Apply the fix; 4. Compiled with ANT; 5. Test with TDJ (before the test, clean the browser console, test the fix and check for an error). 6. Commit; 7. Pull request and comment on the issue. Hugo Ferreira <[email protected]> escreveu no dia segunda, 19/10/2020 à(s) 11:34: > Hi Carlos, > > No problem. > I will do that. > > Carlos Rovira <[email protected]> escreveu no dia segunda, > 19/10/2020 à(s) 11:32: > >> Hi Hugo, >> >> sorry, but this way of sharing code is not the best for us to interact. >> If I copy and override on my file, I get lots of errors and also its >> unformatted, so to review it I should invest a lot of time formatting it >> and see where the email is adding bad characters. >> >> You can use paste.apache.org [1] so we can solve this problem as soon as >> possible. >> but for next ones I think the best is to create a Pull Request (PR) in >> github, so we can review it and integrate more easily [2]. >> >> Thanks and sorry for the trouble, but these days I'm without much time so >> I >> can't afford it. >> >> Best >> >> Carlos >> >> [1] https://paste.apache.org/ >> [2] https://github.com/apache/royale-asjs/issues >> >> >> >> El dom., 18 oct. 2020 a las 23:40, hferreira (<[email protected]>) >> escribió: >> >> > Hi Carlos, >> > >> > I was able to replicate the issue on TDJ apply the fix and saw the issue >> > goes away. >> > BUT I had to clean everything and rebuild everything (I even put a >> console >> > log to be sure that I was testing updated version). >> > I thought that was normal. >> > >> > Thank you for point me out about the remove listener. >> > >> > Here the full source code updated file: >> > >> > >> > >> //////////////////////////////////////////////////////////////////////////////// >> > // >> > // Licensed to the Apache Software Foundation (ASF) under one or more >> > // contributor license agreements. See the NOTICE file distributed >> with >> > // this work for additional information regarding copyright ownership. >> > // The ASF licenses this file to You under the Apache License, Version >> 2.0 >> > // (the "License"); you may not use this file except in compliance with >> > // the License. You may obtain a copy of the License at >> > // >> > // http://www.apache.org/licenses/LICENSE-2.0 >> > // >> > // Unless required by applicable law or agreed to in writing, software >> > // distributed under the License is distributed on an "AS IS" BASIS, >> > // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> > implied. >> > // See the License for the specific language governing permissions and >> > // limitations under the License. >> > // >> > >> > >> //////////////////////////////////////////////////////////////////////////////// >> > package org.apache.royale.jewel.beads.controls.combobox >> > { >> > import org.apache.royale.events.Event; >> > import org.apache.royale.jewel.beads.controls.combobox.IComboBoxView; >> > import >> > org.apache.royale.jewel.beads.controls.textinput.SearchFilterForList; >> > import org.apache.royale.jewel.beads.views.ComboBoxView; >> > import org.apache.royale.jewel.supportClasses.textinput.TextInputBase; >> > import org.apache.royale.jewel.List; >> > import org.apache.royale.events.MouseEvent; >> > >> > /** >> > * The SearchFilter bead class is a specialty bead that can be used with >> > * a Jewel ComboBox to filter options as we type >> > * >> > * @langversion 3.0 >> > * @playerversion Flash 10.2 >> > * @playerversion AIR 2.6 >> > * @productversion Royale 0.9.5 >> > */ >> > public class SearchFilter extends SearchFilterForList >> > { >> > /** >> > * constructor. >> > * >> > * @langversion 3.0 >> > * @playerversion Flash 10.2 >> > * @playerversion AIR 2.6 >> > * @productversion Royale 0.9.5 >> > */ >> > public function SearchFilter() >> > { >> > } >> > >> > public override function set list(value:List):void >> > { >> > super.list = value; >> > COMPILE::JS >> > { >> > if (list != null) >> > list.addEventListener(MouseEvent.CLICK, onListClick); >> > } >> > } >> > >> > private function onListClick(event:MouseEvent):void >> > { >> > list.removeEventListener(MouseEvent.CLICK, onListClick); >> > comboView.popUpVisible = false; >> > } >> > >> > private var comboView:IComboBoxView; >> > >> > override protected function textInputKeyUpLogic(input:Object):void >> > { >> > if(!list) return; >> > >> > // first remove a previous selection >> > if(list.selectedIndex != -1) >> > { >> > var tmp:String = input.text; >> > list.selectedItem = null; >> > input.text = tmp; >> > } >> > >> > if (!comboView.popUpVisible) >> > comboView.popUpVisible = true; >> > >> > // fill "list" with the internal list in the combobox popup >> > //list = comboView.popup.view.list; >> > >> > applyFilter(comboView.textinput.text.toUpperCase()); >> > >> > ComboBoxView(comboView).autoResizeHandler(); //as we filter the popup >> list >> > will be smaller, and we want to reposition >> > } >> > >> > override protected function selectItem(item:Object):void >> > { >> > // Select the item in the list if text is the same >> > // we do at the end to avoid multiple selection (if there's more than >> one >> > matches) >> > // in that case, select the first one in the list >> > // if(item != null) >> > // list.selectedItem = item; >> > } >> > >> > override protected function onBeadsAdded(event:Event):void{ >> > listenOnStrand('dismissPopUp', removeListListeners); >> > listenOnStrand('popUpOpened', popUpOpenedHandler); >> > listenOnStrand('popUpClosed', popUpClosedHandler); >> > >> > comboView = event.target.view as IComboBoxView; >> > if (comboView) >> > { >> > var _textInput:TextInputBase = comboView.textinput as >> > TextInputBase; >> > if (_textInput) { >> > COMPILE::JS >> > { >> > _textInput.element.addEventListener('focus', >> > onInputFocus); >> > } >> > } >> > } >> > } >> > >> > override protected function onInputFocus(event:Event):void{ >> > if (!comboView.popUpVisible) >> > comboView.popUpVisible = true; >> > } >> > >> > protected function popUpOpenedHandler():void { >> > // fill "list" with the internal list in the combobox popup >> > list = comboView.popup.view.list; >> > } >> > >> > protected function popUpClosedHandler():void { >> > list = null; >> > } >> > } >> > } >> > >> > >> > >> > -- >> > Sent from: http://apache-royale-development.20373.n8.nabble.com/ >> > >> >> >> -- >> Carlos Rovira >> Apache Member & Apache Royale PMC >> *Apache Software Foundation* >> http://about.me/carlosrovira >> >
