← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] Rework footprint selection filtering to improve behavior

 

Hi Jon,

another small issue: if only enabled layer is In1.Cu, THT pads are visible, but footprint cannot be selected.
I think that breaks your visible=selectable rule.

Fragment of code from D_PAD::ViewGetLOD that may help here:

    if( ( GetAttribute() == PAD_ATTRIB_STANDARD || GetAttribute() == PAD_ATTRIB_HOLE_NOT_PLATED )
         && !aView->IsLayerVisible( LAYER_PADS_TH ) )
        return HIDE;

Cheers,
Andrzej

W dniu 2018-03-03 o 23:39, Jon Evans pisze:
Hey Andy, Andrzej,

Updated patch attached, let me know if this behavior makes more sense

Best,
Jon

On Fri, Mar 2, 2018 at 3:29 PM, Andy Peters <devel@xxxxxxxxx <mailto:devel@xxxxxxxxx>> wrote:



    On Mar 2, 2018, at 10:28 AM, Andrzej Wolski
    <awolski.kicad@xxxxxxxxx <mailto:awolski.kicad@xxxxxxxxx>> wrote:

    Jon,

    I probably didn't express myself clearly. What I mean is a
    situation when *only* enabled layer if F.Paste and then you
    disable "Pads Front". Now nothing is visible on the board, but
    footprints are still selectable.

    In other words, when no single item belonging to footprint is
    visible, footprints should not be selectable.

    Do you still disagree with me?

    I agree with Andrzej. This is the crux of my bug report.

    But I understand what Jon is saying, and it doesn’t contradict. If
    the _pads_ (for example) are invisible, but say the silkscreen is
    visible, then the footprint _should_ be selectable.

    That, I think, is the difference between layer visibility and item
    visibility. All of the layers could be visible, but if I disable
    Footprints Front, then everything associated with all top-layer
    footprints vanishes and none of the footprints can be selected.
    That’s the proper operation.

    The converse of that is if I leave Footprints Front visibility
    enabled, and then I go and disable all of the layers associated
    with front footprints, like I did in my bug report case (disable
    all layers except Cmts.User), I am still able to select all of the
    invisible footprints. That’s not correct (IMHO).

    -a



    Andrzej

    W dniu 2018-03-02 o 15:42, Jon Evans pisze:
    Hi Andrzej,

    This was my intention, which is why I said I was prepared for
    other people to have other opinions :-)

    I think that you should still be able to select footprints even
    if the "front pads" is hidden from layers like the paste layer,
    *unless* you are in high contrast mode.

    -Jon

    On Fri, Mar 2, 2018 at 3:53 AM, Andrzej Wolski
    <awolski.kicad@xxxxxxxxx <mailto:awolski.kicad@xxxxxxxxx>> wrote:

        I've tried this patch, and there is a small issue: if you
        have only eg front paste layer enabled and front pads are
        hidden, footprint is still selectable.

        Andrzej


        W dniu 2018-02-27 o 04:11, Jon Evans pisze:
        This patch changes the selection logic for footprints to
        fix a reported issue[1] and to make the behavior more
        logical to me.

        I know that correct selection behavior is something of a
        personal preference, so I'm ready to be flamed :-)

        The new behavior:

        A footprint may be selected if:
        1) The corresponding "Footprints" switch is on in the Items
        tab, AND
        2) One or more of the layers that the footprint draws on is
        visible

        This means that if all of the layers are turned off,
        footprints are not selectable (fixes the bug), but it also
        means that now footprints can be selected if any draw
        layers are visible (for example, if you have only F.Mask
        enabled, you can select a footprint that has solder mask
        and is on the front layer).

        Before anyone complains, this is only if high-contrast mode
        is turned OFF.  When it is on, you can still only select
        items that *only* exist on that layer (to make moving
        silkscreen around easier, for example)

        Even though this adds some more for-loops to selection
        filtering, I have not noticed any performance hits on some
        selection of large boards that I tested. More testing is
        welcome.

        [1] https://bugs.launchpad.net/kicad/+bug/1751960
        <https://bugs.launchpad.net/kicad/+bug/1751960>

        -Jon



    _______________________________________________
    Mailing list: https://launchpad.net/~kicad-developers
    <https://launchpad.net/%7Ekicad-developers>
    Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
    <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe : https://launchpad.net/~kicad-developers
    <https://launchpad.net/%7Ekicad-developers>
    More help   : 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



Follow ups

References