Re: What you think about this fix - SearchFilter bead
Hi Carlos, You welcome. I saw your comments on github and also reply on that. Carlos Rovira escreveu no dia terça, 20/10/2020 à(s) 09:19: > Hi Hugo, > > much appreciate the effort. Many thanks! :) > > El mar., 20 oct. 2020 a las 2:21, Hugo Ferreira () > escribió: > > > 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 escreveu no dia segunda, > 19/10/2020 > > à(s) 11:34: > > > > > Hi Carlos, > > > > > > No problem. > > > I will do that. > > > > > > Carlos Rovira 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 ( >) > > >> 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) > > >> >
Re: What you think about this fix - SearchFilter bead
Hi Hugo, much appreciate the effort. Many thanks! :) El mar., 20 oct. 2020 a las 2:21, Hugo Ferreira () escribió: > 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 escreveu no dia segunda, 19/10/2020 > à(s) 11:34: > > > Hi Carlos, > > > > No problem. > > I will do that. > > > > Carlos Rovira 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 () > >> 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; > >> >
Re: What you think about this fix - SearchFilter bead
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 escreveu no dia segunda, 19/10/2020 à(s) 11:34: > Hi Carlos, > > No problem. > I will do that. > > Carlos Rovira 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 () >> 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; >> > >> >
Re: What you think about this fix - SearchFilter bead
Hi Carlos, No problem. I will do that. Carlos Rovira 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 () > 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
Re: What you think about this fix - SearchFilter bead
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 () 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) { >
Re: What you think about this fix - SearchFilter bead
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/
Re: What you think about this fix - SearchFilter bead
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; } } } Carlos Rovira escreveu no dia domingo, 18/10/2020 à(s) 18:04: > Hi Hugo, > > when I tried that code I had to add the imports too. > Anyway I tried again, and I'm getting the same fail in the TDJ SearchFilter > example > Are you getting the same? > Also I think you'll need to remove the listener when the popup closes, > since the list is recreated again and a new listener will be attached > If you don't remove the listeners you left the list hanging and can't be > garbage
Re: What you think about this fix - SearchFilter bead
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; } } } Carlos Rovira escreveu no dia domingo, 18/10/2020 à(s) 18:04: > Hi Hugo, > > when I tried that code I had to add the imports too. > Anyway I tried again, and I'm getting the same fail in the TDJ SearchFilter > example > Are you getting the same? > Also I think you'll need to remove the listener when the popup closes, > since the list is recreated again and a new listener will be attached > If you don't remove the listeners you left the list hanging and can't be > garbage
Re: What you think about this fix - SearchFilter bead
Hi Hugo, when I tried that code I had to add the imports too. Anyway I tried again, and I'm getting the same fail in the TDJ SearchFilter example Are you getting the same? Also I think you'll need to remove the listener when the popup closes, since the list is recreated again and a new listener will be attached If you don't remove the listeners you left the list hanging and can't be garbage collected. thanks El dom., 18 oct. 2020 a las 18:02, Hugo Ferreira () escribió: > Hi Carlos, > > I was able to compile the Royale SDK with ant. > Built the TDJ and replicate the exactly issue that you mention before. > Applied a fix that keeps my original fix without the issue that you mention > but this time directly from the compiled Royale SDK + TDJ. > > So, the new code is 2 new imports: > import org.apache.royale.jewel.List; > import org.apache.royale.events.MouseEvent; > > And this: > 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 > { > comboView.popUpVisible = false; > } > > What do you think ? > > Carlos Rovira escreveu no dia quinta, 15/10/2020 > à(s) 09:13: > > > Ok Hugo, > > > > many thanks :) > > > > El jue., 15 oct. 2020 a las 1:50, Hugo Ferreira ( >) > > escribió: > > > > > Hi Carlos, > > > > > > OK, let me try :) > > > > > > Carlos Rovira escreveu no dia quarta, > > 14/10/2020 > > > à(s) 08:29: > > > > > > > Hi Hugo, > > > > > > > > I'm trying that snippet in jewel with TDJ and as I start to interact > > with > > > > the CMB I get this: > > > > > > > > SearchFilter.as:123 Uncaught TypeError: Cannot read property > > > > 'addEventListener' of null > > > > at > > > > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.set__list > > > > (SearchFilter.as:123) > > > > at > > > > > > > > > > > > > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.popUpClosedHandler > > > > (SearchFilter.as:115) > > > > at > > > > > > > > > > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.fireListeners > > > > (EventDispatcher.as:131) > > > > at Function.goog.events.EventTarget.dispatchEventInternal_ > > > > (eventtarget.js:381) > > > > at > > > > > > > > > > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.dispatchEvent > > > > (EventDispatcher.as:108) > > > > at > > > > > > > > > > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.core.ElementWrapper.dispatchEvent > > > > (ElementWrapper.js:229) > > > > at Object.org.apache.royale.utils.sendStrandEvent > > > > (sendStrandEvent.js:28) > > > > at > > org.apache.royale.jewel.beads.views.ComboBoxView.set__popUpVisible > > > > (ComboBoxView.as:232) > > > > at > > > > > > > > > > > > > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.org_apache_royale_jewel_beads_controls_combobox_SearchFilter_onListClick > > > > (SearchFilter.as:129) > > > > at Function.goog.events.fireListener [as googFireListener] > > > > (events.js:744) > > > > > > > > I think you need to solve the way you are trying. You can monkeypatch > > the > > > > code, but doing that will be very difficult to do this kind of fixes. > > > > The best way is: > > > > > > > > 1.- have the source code building in your local (with maven and ant, > > for > > > > this I shared other times this script I use on Mac, that you can > adapt > > > for > > > > you [1]) > > > > 2.- As you have the 3 repos working on your side you can change any > > > library > > > > and then do in the lib root folder : "mvn clean install > > > -Poption-with-swf" > > > > and then "ant" to build with both and check all is fine. > > > > 3.- Then you can use a test project like TDJ or any other to try your > > > > changes. For example if you are using maven you don't need to sync > the > > > > library since you get directly in you local repo and the test project > > > will > > > > use it in the next compilation with your changes. > > > > > > > > Thanks for trying to fix it and I'll wait for your thoughts and see > if > > > you > > > > can go further :) > > > > > > > > [1] > > > https://gist.github.com/carlosrovira/200753108de263fa43e80d3228213509 > > > > > > > > > > > > El mié., 14 oct. 2020 a las 0:57, Hugo Ferreira (< > > hferreira...@gmail.com > > > >) > > > > escribió: > > > > > > > > > Hi, > > > > > > > > > > As mention previous, I found a bug on ComboBox + SearchFilter bead: > > > > > https://github.com/apache/royale-asjs/issues/917 > > > > > This bug happens easly on my application because I saw with a > > ComboBox > > > > with > > > > > many similar items but it also happens on Tour de Jewel (more > > difficult > > > > to > > > > > reproduce because all the items are different) > > > > > > > > > > After I bring
Re: What you think about this fix - SearchFilter bead
Hi Carlos, I was able to compile the Royale SDK with ant. Built the TDJ and replicate the exactly issue that you mention before. Applied a fix that keeps my original fix without the issue that you mention but this time directly from the compiled Royale SDK + TDJ. So, the new code is 2 new imports: import org.apache.royale.jewel.List; import org.apache.royale.events.MouseEvent; And this: 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 { comboView.popUpVisible = false; } What do you think ? Carlos Rovira escreveu no dia quinta, 15/10/2020 à(s) 09:13: > Ok Hugo, > > many thanks :) > > El jue., 15 oct. 2020 a las 1:50, Hugo Ferreira () > escribió: > > > Hi Carlos, > > > > OK, let me try :) > > > > Carlos Rovira escreveu no dia quarta, > 14/10/2020 > > à(s) 08:29: > > > > > Hi Hugo, > > > > > > I'm trying that snippet in jewel with TDJ and as I start to interact > with > > > the CMB I get this: > > > > > > SearchFilter.as:123 Uncaught TypeError: Cannot read property > > > 'addEventListener' of null > > > at > > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.set__list > > > (SearchFilter.as:123) > > > at > > > > > > > > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.popUpClosedHandler > > > (SearchFilter.as:115) > > > at > > > > > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.fireListeners > > > (EventDispatcher.as:131) > > > at Function.goog.events.EventTarget.dispatchEventInternal_ > > > (eventtarget.js:381) > > > at > > > > > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.dispatchEvent > > > (EventDispatcher.as:108) > > > at > > > > > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.core.ElementWrapper.dispatchEvent > > > (ElementWrapper.js:229) > > > at Object.org.apache.royale.utils.sendStrandEvent > > > (sendStrandEvent.js:28) > > > at > org.apache.royale.jewel.beads.views.ComboBoxView.set__popUpVisible > > > (ComboBoxView.as:232) > > > at > > > > > > > > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.org_apache_royale_jewel_beads_controls_combobox_SearchFilter_onListClick > > > (SearchFilter.as:129) > > > at Function.goog.events.fireListener [as googFireListener] > > > (events.js:744) > > > > > > I think you need to solve the way you are trying. You can monkeypatch > the > > > code, but doing that will be very difficult to do this kind of fixes. > > > The best way is: > > > > > > 1.- have the source code building in your local (with maven and ant, > for > > > this I shared other times this script I use on Mac, that you can adapt > > for > > > you [1]) > > > 2.- As you have the 3 repos working on your side you can change any > > library > > > and then do in the lib root folder : "mvn clean install > > -Poption-with-swf" > > > and then "ant" to build with both and check all is fine. > > > 3.- Then you can use a test project like TDJ or any other to try your > > > changes. For example if you are using maven you don't need to sync the > > > library since you get directly in you local repo and the test project > > will > > > use it in the next compilation with your changes. > > > > > > Thanks for trying to fix it and I'll wait for your thoughts and see if > > you > > > can go further :) > > > > > > [1] > > https://gist.github.com/carlosrovira/200753108de263fa43e80d3228213509 > > > > > > > > > El mié., 14 oct. 2020 a las 0:57, Hugo Ferreira (< > hferreira...@gmail.com > > >) > > > escribió: > > > > > > > Hi, > > > > > > > > As mention previous, I found a bug on ComboBox + SearchFilter bead: > > > > https://github.com/apache/royale-asjs/issues/917 > > > > This bug happens easly on my application because I saw with a > ComboBox > > > with > > > > many similar items but it also happens on Tour de Jewel (more > difficult > > > to > > > > reproduce because all the items are different) > > > > > > > > After I bring the SearchFilter bead to my project, I found a fix or > > > > workaround to this bug. > > > > I confirm that the end result works well, however I would like to > know > > > what > > > > do you think about this fix ? > > > > > > > > On SearchFilter.as, I added this on my side: > > > > public override function set list(value:List):void > > > > { > > > > super.list = value; > > > > COMPILE::JS > > > > { > > > > list.addEventListener(MouseEvent.CLICK, onListClick); > > > > } > > > > } > > > > > > > > private function onListClick(event:MouseEvent):void > > > > { > > > > comboView.popUpVisible = false; > > > > } > > > > > > > > If is OK, I can commit it. > > > > > > > > > > > > > -- > > > Carlos Rovira > > > Apache Member & Apache Royale PMC > > > *Apache Software Foundation*
Re: What you think about this fix - SearchFilter bead
Ok Hugo, many thanks :) El jue., 15 oct. 2020 a las 1:50, Hugo Ferreira () escribió: > Hi Carlos, > > OK, let me try :) > > Carlos Rovira escreveu no dia quarta, 14/10/2020 > à(s) 08:29: > > > Hi Hugo, > > > > I'm trying that snippet in jewel with TDJ and as I start to interact with > > the CMB I get this: > > > > SearchFilter.as:123 Uncaught TypeError: Cannot read property > > 'addEventListener' of null > > at > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.set__list > > (SearchFilter.as:123) > > at > > > > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.popUpClosedHandler > > (SearchFilter.as:115) > > at > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.fireListeners > > (EventDispatcher.as:131) > > at Function.goog.events.EventTarget.dispatchEventInternal_ > > (eventtarget.js:381) > > at > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.dispatchEvent > > (EventDispatcher.as:108) > > at > > > > > org.apache.royale.jewel.ComboBox.org.apache.royale.core.ElementWrapper.dispatchEvent > > (ElementWrapper.js:229) > > at Object.org.apache.royale.utils.sendStrandEvent > > (sendStrandEvent.js:28) > > at org.apache.royale.jewel.beads.views.ComboBoxView.set__popUpVisible > > (ComboBoxView.as:232) > > at > > > > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.org_apache_royale_jewel_beads_controls_combobox_SearchFilter_onListClick > > (SearchFilter.as:129) > > at Function.goog.events.fireListener [as googFireListener] > > (events.js:744) > > > > I think you need to solve the way you are trying. You can monkeypatch the > > code, but doing that will be very difficult to do this kind of fixes. > > The best way is: > > > > 1.- have the source code building in your local (with maven and ant, for > > this I shared other times this script I use on Mac, that you can adapt > for > > you [1]) > > 2.- As you have the 3 repos working on your side you can change any > library > > and then do in the lib root folder : "mvn clean install > -Poption-with-swf" > > and then "ant" to build with both and check all is fine. > > 3.- Then you can use a test project like TDJ or any other to try your > > changes. For example if you are using maven you don't need to sync the > > library since you get directly in you local repo and the test project > will > > use it in the next compilation with your changes. > > > > Thanks for trying to fix it and I'll wait for your thoughts and see if > you > > can go further :) > > > > [1] > https://gist.github.com/carlosrovira/200753108de263fa43e80d3228213509 > > > > > > El mié., 14 oct. 2020 a las 0:57, Hugo Ferreira ( >) > > escribió: > > > > > Hi, > > > > > > As mention previous, I found a bug on ComboBox + SearchFilter bead: > > > https://github.com/apache/royale-asjs/issues/917 > > > This bug happens easly on my application because I saw with a ComboBox > > with > > > many similar items but it also happens on Tour de Jewel (more difficult > > to > > > reproduce because all the items are different) > > > > > > After I bring the SearchFilter bead to my project, I found a fix or > > > workaround to this bug. > > > I confirm that the end result works well, however I would like to know > > what > > > do you think about this fix ? > > > > > > On SearchFilter.as, I added this on my side: > > > public override function set list(value:List):void > > > { > > > super.list = value; > > > COMPILE::JS > > > { > > > list.addEventListener(MouseEvent.CLICK, onListClick); > > > } > > > } > > > > > > private function onListClick(event:MouseEvent):void > > > { > > > comboView.popUpVisible = false; > > > } > > > > > > If is OK, I can commit it. > > > > > > > > > -- > > Carlos Rovira > > Apache Member & Apache Royale PMC > > *Apache Software Foundation* > > http://about.me/carlosrovira > > > -- Carlos Rovira Apache Member & Apache Royale PMC *Apache Software Foundation* http://about.me/carlosrovira
Re: What you think about this fix - SearchFilter bead
Hi Carlos, OK, let me try :) Carlos Rovira escreveu no dia quarta, 14/10/2020 à(s) 08:29: > Hi Hugo, > > I'm trying that snippet in jewel with TDJ and as I start to interact with > the CMB I get this: > > SearchFilter.as:123 Uncaught TypeError: Cannot read property > 'addEventListener' of null > at > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.set__list > (SearchFilter.as:123) > at > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.popUpClosedHandler > (SearchFilter.as:115) > at > > org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.fireListeners > (EventDispatcher.as:131) > at Function.goog.events.EventTarget.dispatchEventInternal_ > (eventtarget.js:381) > at > > org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.dispatchEvent > (EventDispatcher.as:108) > at > > org.apache.royale.jewel.ComboBox.org.apache.royale.core.ElementWrapper.dispatchEvent > (ElementWrapper.js:229) > at Object.org.apache.royale.utils.sendStrandEvent > (sendStrandEvent.js:28) > at org.apache.royale.jewel.beads.views.ComboBoxView.set__popUpVisible > (ComboBoxView.as:232) > at > > org.apache.royale.jewel.beads.controls.combobox.SearchFilter.org_apache_royale_jewel_beads_controls_combobox_SearchFilter_onListClick > (SearchFilter.as:129) > at Function.goog.events.fireListener [as googFireListener] > (events.js:744) > > I think you need to solve the way you are trying. You can monkeypatch the > code, but doing that will be very difficult to do this kind of fixes. > The best way is: > > 1.- have the source code building in your local (with maven and ant, for > this I shared other times this script I use on Mac, that you can adapt for > you [1]) > 2.- As you have the 3 repos working on your side you can change any library > and then do in the lib root folder : "mvn clean install -Poption-with-swf" > and then "ant" to build with both and check all is fine. > 3.- Then you can use a test project like TDJ or any other to try your > changes. For example if you are using maven you don't need to sync the > library since you get directly in you local repo and the test project will > use it in the next compilation with your changes. > > Thanks for trying to fix it and I'll wait for your thoughts and see if you > can go further :) > > [1] https://gist.github.com/carlosrovira/200753108de263fa43e80d3228213509 > > > El mié., 14 oct. 2020 a las 0:57, Hugo Ferreira () > escribió: > > > Hi, > > > > As mention previous, I found a bug on ComboBox + SearchFilter bead: > > https://github.com/apache/royale-asjs/issues/917 > > This bug happens easly on my application because I saw with a ComboBox > with > > many similar items but it also happens on Tour de Jewel (more difficult > to > > reproduce because all the items are different) > > > > After I bring the SearchFilter bead to my project, I found a fix or > > workaround to this bug. > > I confirm that the end result works well, however I would like to know > what > > do you think about this fix ? > > > > On SearchFilter.as, I added this on my side: > > public override function set list(value:List):void > > { > > super.list = value; > > COMPILE::JS > > { > > list.addEventListener(MouseEvent.CLICK, onListClick); > > } > > } > > > > private function onListClick(event:MouseEvent):void > > { > > comboView.popUpVisible = false; > > } > > > > If is OK, I can commit it. > > > > > -- > Carlos Rovira > Apache Member & Apache Royale PMC > *Apache Software Foundation* > http://about.me/carlosrovira >
Re: What you think about this fix - SearchFilter bead
Hi Hugo, I'm trying that snippet in jewel with TDJ and as I start to interact with the CMB I get this: SearchFilter.as:123 Uncaught TypeError: Cannot read property 'addEventListener' of null at org.apache.royale.jewel.beads.controls.combobox.SearchFilter.set__list (SearchFilter.as:123) at org.apache.royale.jewel.beads.controls.combobox.SearchFilter.popUpClosedHandler (SearchFilter.as:115) at org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.fireListeners (EventDispatcher.as:131) at Function.goog.events.EventTarget.dispatchEventInternal_ (eventtarget.js:381) at org.apache.royale.jewel.ComboBox.org.apache.royale.events.EventDispatcher.dispatchEvent (EventDispatcher.as:108) at org.apache.royale.jewel.ComboBox.org.apache.royale.core.ElementWrapper.dispatchEvent (ElementWrapper.js:229) at Object.org.apache.royale.utils.sendStrandEvent (sendStrandEvent.js:28) at org.apache.royale.jewel.beads.views.ComboBoxView.set__popUpVisible (ComboBoxView.as:232) at org.apache.royale.jewel.beads.controls.combobox.SearchFilter.org_apache_royale_jewel_beads_controls_combobox_SearchFilter_onListClick (SearchFilter.as:129) at Function.goog.events.fireListener [as googFireListener] (events.js:744) I think you need to solve the way you are trying. You can monkeypatch the code, but doing that will be very difficult to do this kind of fixes. The best way is: 1.- have the source code building in your local (with maven and ant, for this I shared other times this script I use on Mac, that you can adapt for you [1]) 2.- As you have the 3 repos working on your side you can change any library and then do in the lib root folder : "mvn clean install -Poption-with-swf" and then "ant" to build with both and check all is fine. 3.- Then you can use a test project like TDJ or any other to try your changes. For example if you are using maven you don't need to sync the library since you get directly in you local repo and the test project will use it in the next compilation with your changes. Thanks for trying to fix it and I'll wait for your thoughts and see if you can go further :) [1] https://gist.github.com/carlosrovira/200753108de263fa43e80d3228213509 El mié., 14 oct. 2020 a las 0:57, Hugo Ferreira () escribió: > Hi, > > As mention previous, I found a bug on ComboBox + SearchFilter bead: > https://github.com/apache/royale-asjs/issues/917 > This bug happens easly on my application because I saw with a ComboBox with > many similar items but it also happens on Tour de Jewel (more difficult to > reproduce because all the items are different) > > After I bring the SearchFilter bead to my project, I found a fix or > workaround to this bug. > I confirm that the end result works well, however I would like to know what > do you think about this fix ? > > On SearchFilter.as, I added this on my side: > public override function set list(value:List):void > { > super.list = value; > COMPILE::JS > { > list.addEventListener(MouseEvent.CLICK, onListClick); > } > } > > private function onListClick(event:MouseEvent):void > { > comboView.popUpVisible = false; > } > > If is OK, I can commit it. > -- Carlos Rovira Apache Member & Apache Royale PMC *Apache Software Foundation* http://about.me/carlosrovira