← Back to team overview

kicad-developers team mailing list archive

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

 

Fixed that issue, and pushed to master.  Thanks for testing, Andrzej!

On Mon, Mar 5, 2018 at 12:57 PM, Andrzej Wolski <awolski.kicad@xxxxxxxxx>
wrote:

> 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> wrote:
>
>>
>>
>> On Mar 2, 2018, at 10:28 AM, Andrzej Wolski <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>
>> 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
>>>
>>> -Jon
>>>
>>>
>>
>> _______________________________________________
>> 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
>>
>>
>
>
> _______________________________________________
> 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
>
>
>
> _______________________________________________
> 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
>
>

References