Here's a patch that fixes the issues observed.
I have changed the algorithm to a simpler one that should be more
bulletproof.
I think the optimal approach for complicated footprints is still not
this way, but that would require more time to tweak and optimize (i.e.
generating some kind of bounding hull that is non-convex, and caching
it until the shape changes)
You can see the new patch on Andrzej's test files here:
https://imgur.com/a/L16ky
Purple shows the bounding boxes, yellow shows the selectable area
under the new algorithm.
-Jon
On Wed, Feb 21, 2018 at 1:41 PM, Wayne Stambaugh <stambaughw@xxxxxxxxx
<mailto:stambaughw@xxxxxxxxx>> wrote:
If you could get it done by Friday before I roll out rc1, that's fine.
Wayne
On 2/21/2018 1:37 PM, Jon Evans wrote:
> I'll be able to look at it this evening. Can report then
whether or not
> I will have a patch tonight. Up to you whether or not that is
too long
> of a delay.
>
> -Jon
>
> On Wed, Feb 21, 2018 at 1:32 PM, Wayne Stambaugh
<stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
> <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>> wrote:
>
> Jon,
>
> Would you please take a look at this as soon as possible?
If you cannot
> get to it in a reasonable amount of time, please let me know
so I can
> back out your polygon hit test patch. We need to be able to
select
> footprints.
>
> Thanks,
>
> Wayne
>
> On 2/21/2018 11:41 AM, Andrzej Wolski wrote:
> > After this patch, I can no longer select some footprints
by clicking
> > inside their area.
> > Please see the board in an attachment.
> >
> > Andrzej
> >
> > W dniu 2018-02-20 o 16:44, Wayne Stambaugh pisze:
> >> Jon,
> >>
> >> I merged your patch.
> >>
> >> Thanks,
> >>
> >> Wayne
> >>
> >> On 2/18/2018 7:01 PM, Jon Evans wrote:
> >>> Hi Wayne,
> >>>
> >>> In my testing there is no performance impact, but more
testing is
> >>> welcome. It shouldn't be doing the calculation on too many
> objects in
> >>> general, since this is a "second pass" hit test that
applies to
> modules
> >>> that have a bounding box overlapping the mouse cursor.
> >>> However, I did some more testing and discovered some weird
> behavior, so
> >>> I have tweaked the algorithm in the attached new version
of the
> patch.
> >>>
> >>> -Jon
> >>>
> >>> On Sun, Feb 18, 2018 at 5:25 PM, Wayne Stambaugh
> <stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
<mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>
> >>> <mailto:stambaughw@xxxxxxxxx
<mailto:stambaughw@xxxxxxxxx> <mailto:stambaughw@xxxxxxxxx
<mailto:stambaughw@xxxxxxxxx>>>> wrote:
> >>>
> >>> Hey Jon,
> >>>
> >>> Did you notice an performance hit with your patch?
> Obviously there
> >>> is going to be more overhead calculating a polygon
versus a
> >>> rectangle. I just want to be sure we are not
causing any
> usability
> >>> issues due to the polygon calculations.
> >>>
> >>> Thanks,
> >>>
> >>> Wayne
> >>>
> >>>
> >>> On 02/18/2018 12:10 PM, Jon Evans wrote:
> >>>
> >>> Hi all,
> >>>
> >>> The attached patch adds some plumbing to
calculate and
> make use
> >>> of a polygonal bounding area for modules. It
fixes the
> below
> >>> issue and in general improves the accuracy of
selection
> in my
> >>> testing.
> >>>
> >>> This mechanism could be extended to other
objects besides
> >>> modules if it's useful. I figured I'd start by
sending out
> >>> this
> >>> patch to get feedback, and if it gets merged,
look for
> other
> >>> areas where we could improve things by using
polygons
> >>> instead of
> >>> bounding boxes.
> >>>
> >>> https://bugs.launchpad.net/kicad/+bug/1749077
<https://bugs.launchpad.net/kicad/+bug/1749077>
> <https://bugs.launchpad.net/kicad/+bug/1749077
<https://bugs.launchpad.net/kicad/+bug/1749077>>
> >>> <https://bugs.launchpad.net/kicad/+bug/1749077
<https://bugs.launchpad.net/kicad/+bug/1749077>
> <https://bugs.launchpad.net/kicad/+bug/1749077
<https://bugs.launchpad.net/kicad/+bug/1749077>>>
> >>>
> >>> -Jon
> >>>
> >>>
> >>> _______________________________________________
> >>> Mailing list:
https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> >>> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>>
> >>> Post to :
kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
> >>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>>
> >>> Unsubscribe :
https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> >>> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>>
> >>> More help :
https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>
> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>>
> >>> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>
> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>>>
> >>>
> >>>
> >>> _______________________________________________
> >>> Mailing list:
https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> >>> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>>
> >>> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
> >>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>>
> >>> Unsubscribe :
https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> >>> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>>
> >>> More help : https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>
> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>>
> >>> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>
> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>>>
> >>>
> >>>
> >> _______________________________________________
> >> Mailing list: https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> >> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
> >> Unsubscribe : https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> >> More help : https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>
> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>>
> >
> >
> >
> >
> > _______________________________________________
> > Mailing list: https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> > Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
> > Unsubscribe : https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> > More help : https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>
> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>>
> >
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
<mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
> Unsubscribe : https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>
> <https://launchpad.net/~kicad-developers
<https://launchpad.net/%7Ekicad-developers>>
> More help : https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>
> <https://help.launchpad.net/ListHelp
<https://help.launchpad.net/ListHelp>>
>
>
_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~kicad-developers
More help : https://help.launchpad.net/ListHelp