← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] Move ZoomFitScreen and ZoomPreset to common

 

It was in this thread; I've attached them both again for convenience.  The
"0001-Remove-BOARD-SetBoundingBox.patch" is applied after applying the
other patch.

On Wed, Mar 1, 2017 at 8:59 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx>
wrote:

> On 3/1/2017 8:54 AM, Jon Evans wrote:
> > Wayne, Orson's latest patch is basically Option 2 but implemented
> > another way.  Can you check it out and let us know if you are OK merging
> > it as-is, or if we should change the implementation to be more like what
> > I described?
>
> I don't remember seeing this patch.  Was it posted to the dev list?
>
> >
> > Thanks,
> > Jon
> >
> > On Wed, Mar 1, 2017 at 8:43 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx
> > <mailto:stambaughw@xxxxxxxxx>> wrote:
> >
> >     Option 2 seems fine.  It may be easier to just add an option
> argument to
> >     the existing GetBoundingBox() function to either return the cached
> >     bounding box or recalculate the bounding box on demand rather than
> >     create a different function for the cached vs. uncached version.
> >
> >     On 3/1/2017 2:51 AM, Maciej Sumiński wrote:
> >     > Wayne, what do you think? If it is acceptable, then I would like to
> >     > merge the patches. I should not judge my code, as I might be
> >     tempted to
> >     > consider it a good solution.
> >     >
> >     > In case my proposal to cache the bounding box in autorouter code
> >     is not
> >     > approved, then I would say #2 would do the job.
> >     >
> >     > Cheers,
> >     > Orson
> >     >
> >     > On 03/01/2017 01:23 AM, Jon Evans wrote:
> >     >> Update: after some more testing, I think Orson's patch on top of
> >     mine is
> >     >> the way to go.  It pulls the computation out of the loops for
> >     autorouter,
> >     >> and that's the only place where the board's bounding box is used
> >     >> repetitively.  Since the other call sites are only going to get
> the
> >     >> bounding box intermittently, I don't think it's worth any effort
> >     doing
> >     >> complicated things to track and recompute the bounding box when
> >     things are
> >     >> changed.
> >     >>
> >     >> So, I think my patch and Orson's should be merged.
> >     >>
> >     >> -Jon
> >     >>
> >     >> On Tue, Feb 28, 2017 at 6:51 PM, Jon Evans <jon@xxxxxxxxxxxxx
> >     <mailto:jon@xxxxxxxxxxxxx>> wrote:
> >     >>
> >     >>> I'm finally back to this problem now that I have some other WIP
> >     committed.
> >     >>>
> >     >>> As far as I can tell, there two paths to go down for this
> problem:
> >     >>>
> >     >>> 1) Implement auto-caching of the bounding box.  This requires
> some
> >     >>> mechanism to tell BOARD that it needs to update the cache, be it
> >     OBSERVABLE
> >     >>> or some other update function added to BOARD_ITEM.  No matter
> >     how it's
> >     >>> done, this method seems not great to me because it requires
> >     touching a ton
> >     >>> of code to provide coverage for every possible entry point that
> >     could end
> >     >>> up having an effect on the bounding box.
> >     >>>
> >     >>> 2) Have two different calls to get the bounding box for an
> >     EDA_ITEM, one
> >     >>> that always re-generates the cache and one that just returns a
> >     cached
> >     >>> value.  Update the call sites that hit the bounding box
> frequently
> >     >>> (autorouter, etc) to make use of the cached value; keep the call
> >     sites that
> >     >>> always re-generate the bounding box in today's code working that
> >     way.
> >     >>> Performance shouldn't be any better or worse than it is now.
> >     >>>
> >     >>> 3) Track whether a board is clean/dirty in some other way
> >     besides looking
> >     >>> at BOARD_ITEMs.  This might not be practical while we still
> >     support legacy,
> >     >>> but once there is only GAL, I could see this maybe being
> >     possible through
> >     >>> the tool framework.  For example, actions could be marked as
> >     possibly
> >     >>> impacting the board or not (i.e. move item does, zoom does not)
> >     >>>
> >     >>> So, unless someone suggests otherwise, I'm going to try
> >     implementing #2,
> >     >>> and suggest #3 as a future improvement that would improve
> >     performance for
> >     >>> some edge case operations (i.e. "zoom to fit screen" would be
> >     instantaneous
> >     >>> if nothing has modified the board since the last time the bbox
> >     was cached,
> >     >>> even on large boards)
> >     >>>
> >     >>> -Jon
> >     >>>
> >     >>> On Fri, Feb 24, 2017 at 11:01 AM, Wayne Stambaugh
> >     <stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>
> >     >>> wrote:
> >     >>>
> >     >>>> On 2/24/2017 10:30 AM, Maciej Sumiński wrote:
> >     >>>>> Most of the operations one can do on a BOARD_ITEM potentially
> >     affects
> >     >>>>> the board bounding box. It means there might be many places
> >     where the
> >     >>>>> notifications should be added.
> >     >>>>>
> >     >>>>> Some time ago, Michael Steinberg has put in place OBSERVABLE
> class
> >     >>>>> (include/observable.h) that could facilitate the task.
> >     >>>>
> >     >>>> It could be useful but I'm not sure it would be a better design
> >     than the
> >     >>>> child object informing it's parent that it's bounding box has
> >     changed.
> >     >>>> I'm not sure the additional code would make the code any more
> >     readable.
> >     >>>> The only benefit would be if other observers were required.
> >     >>>>
> >     >>>>>
> >     >>>>> With the current approach, developers have to guess whether to
> >     update
> >     >>>>> the bounding box with ComputeBoundingBox() or take the cached
> >     value.
> >     >>>>> Update is called in very few places, so I really wonder what
> >     kind of
> >     >>>>> magic makes it work, but I might have missed something here.
> >     >>>>
> >     >>>> This solution would require limiting the entry points in the
> BOARD
> >     >>>> object that allow changes to the BOARD's child items.
> >     Conceptually this
> >     >>>> is probably easier to understand but requires developers to be
> >     diligent
> >     >>>> when making changes to the BOARD object or not trying to bypass
> >     these
> >     >>>> entry points.
> >     >>>>
> >     >>>>>
> >     >>>>> Regards,
> >     >>>>> Orson
> >     >>>>>
> >     >>>>> On 02/24/2017 04:06 PM, Wayne Stambaugh wrote:
> >     >>>>>> Every BOARD_ITEM has a parent/child relationship or at least
> >     it did if
> >     >>>>>> someone did not break it.  You can always find the parent
> >     BOARD object
> >     >>>>>> by walking up the BOARD_ITEM parent list.  There is already a
> >     >>>>>> BOARD_ITEM::GetBoard() call that should return the parent
> >     board.  You
> >     >>>>>> could use that to notify the BOARD object when a child
> BOARD_ITEM
> >     >>>> change
> >     >>>>>> effects the bounding box.
> >     >>>>>>
> >     >>>>>> On 2/24/2017 9:27 AM, Jon Evans wrote:
> >     >>>>>>> We need a solution that allows GetBoundingBox to be called
> >     blindly,
> >     >>>>>>> without knowing if (or how) an EDA_ITEM subclass needs to
> >     have the
> >     >>>>>>> bounding box updated.
> >     >>>>>>>
> >     >>>>>>> Does anyone have ideas about how complicated it would be to
> >     give the
> >     >>>>>>> BOARD class knowledge of whether or not anything inside it
> has
> >     >>>> changed?
> >     >>>>>>> This is what I tried to implement at first, but Orson
> >     pointed out that
> >     >>>>>>> the way I did it would miss some kinds of changes.
> >     >>>>>>>
> >     >>>>>>> Figuring out the above also seems useful for other reasons
> >     -- for
> >     >>>>>>> example, autosave / backup features are easier to implement
> >     if there
> >     >>>> is
> >     >>>>>>> a global "dirty/clean" flag for things like BOARD.
> >     >>>>>>>
> >     >>>>>>> If there is no good way to implement caching, I guess
> >     another way
> >     >>>> would
> >     >>>>>>> be to implement caching at the sites that use the BOARD
> >     bounding box
> >     >>>>>>> heavily (autorouter etc)
> >     >>>>>>>
> >     >>>>>>> -Jon
> >     >>>>>>>
> >     >>>>>>> On Fri, Feb 24, 2017 at 9:22 AM, Wayne Stambaugh <
> >     >>>> stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>
> >     >>>>>>> <mailto:stambaughw@xxxxxxxxx <mailto:stambaughw@xxxxxxxxx>>>
> >     wrote:
> >     >>>>>>>
> >     >>>>>>>     On 2/24/2017 4:16 AM, Maciej Sumiński wrote:
> >     >>>>>>>     > Hi Jon,
> >     >>>>>>>     >
> >     >>>>>>>     > The current version looks much better to me. From what
> >     I see
> >     >>>> there is no
> >     >>>>>>>     > actual bounding box caching, as GetBoundingBox()
> >     always calls
> >     >>>>>>>     > ComputeBoundingBox(). I am fine with that, but before
> >     I push
> >     >>>> the patch I
> >     >>>>>>>     > need to ask: does anyone know why the board bounding
> >     box is
> >     >>>> cached? I
> >     >>>>>>>     > believe it must have been done to boost performance of
> >     certain
> >     >>>> parts of
> >     >>>>>>>     > the code, but I wonder if it is really necessary.
> >     Especially
> >     >>>> that one
> >     >>>>>>>     > needs to know that it has to be updated using
> >     >>>> ComputeBoundingBox().
> >     >>>>>>>
> >     >>>>>>>     It was cached so it didn't need to be recalculated every
> >     time the
> >     >>>>>>>     bounding box was required.  It should or at least it did
> >     >>>> recalculate
> >     >>>>>>>     only when the changes were made since the last call to
> >     fetch the
> >     >>>>>>>     bounding box.  On very complex boards, this can take a
> >     while.
> >     >>>> Getting
> >     >>>>>>>     the bounding box is called fairly often so this can add
> >     up.  I
> >     >>>> don't see
> >     >>>>>>>     any reason to recalculate the bounding box on every get
> >     bounding
> >     >>>> box
> >     >>>>>>>     call.  If the current bounding box behavior is broken,
> >     then it
> >     >>>> should be
> >     >>>>>>>     fixed.  I don't see any reason to get rid of the caching
> >     method.
> >     >>>> If you
> >     >>>>>>>     are operating outside of the normal methods for adding
> >     and/or
> >     >>>> editing
> >     >>>>>>>     board objects that prevents the correct bounding box
> >     from being
> >     >>>>>>>     calculated, that is your fault and you need to fix your
> code
> >     >>>>>>>     accordingly.
> >     >>>>>>>
> >     >>>>>>>     >
> >     >>>>>>>     > Just by looking at the code, I noticed that the
> >     autorouter calls
> >     >>>>>>>     > BOARD::GetBoundingBox() frequently, but I could not
> >     see much
> >     >>>>>>>     difference
> >     >>>>>>>     > with caching disabled. Likely, the routing algorithm
> takes
> >     >>>>>>>     significantly
> >     >>>>>>>     > more time than the bounding box calculations.
> >     >>>>>>>     >
> >     >>>>>>>     > Personally I would completely remove m_BoundingBox
> field
> >     >>>> instead of
> >     >>>>>>>     > making it mutable. Also, I have noticed there are a
> >     few places
> >     >>>>>>>     where the
> >     >>>>>>>     > bounding box is overridden with SetBoundingBox(). It
> >     seems to
> >     >>>> me a bit
> >     >>>>>>>     > dubious, as bounding box should depend solely on the
> items
> >     >>>>>>>     belonging to
> >     >>>>>>>     > the board. I attach a patch to show what I would
> >     change. Any
> >     >>>> comments,
> >     >>>>>>>     > especially from Wayne & Jean-Pierre?
> >     >>>>>>>     >
> >     >>>>>>>     > Regards,
> >     >>>>>>>     > Orson
> >     >>>>>>>     >
> >     >>>>>>>     > On 02/23/2017 01:49 PM, Jon Evans wrote:
> >     >>>>>>>     >> Hi Orson,
> >     >>>>>>>     >>
> >     >>>>>>>     >> Here's an updated patch with the changes you
> >     requested.  The
> >     >>>> only
> >     >>>>>>>     issue is,
> >     >>>>>>>     >> without some kind of caching, I had to change the
> >     call sites
> >     >>>> that
> >     >>>>>>>     were
> >     >>>>>>>     >> interested in the board bounding box with edges only,
> >     so the
> >     >>>>>>>     patch has
> >     >>>>>>>     >> grown in scope.  Let me know if this looks better.
> >     >>>>>>>     >>
> >     >>>>>>>     >> Best,
> >     >>>>>>>     >> Jon
> >     >>>>>>>     >>
> >     >>>>>>>     >> On Thu, Feb 23, 2017 at 4:17 AM, Maciej Sumiński
> >     >>>>>>>     <maciej.suminski@xxxxxxx
> >     <mailto:maciej.suminski@xxxxxxx> <mailto:maciej.suminski@xxxxxxx
> >     <mailto:maciej.suminski@xxxxxxx>>>
> >     >>>>>>>     >> wrote:
> >     >>>>>>>     >>
> >     >>>>>>>     >>> Hi Jon,
> >     >>>>>>>     >>>
> >     >>>>>>>     >>> I really like the generic approach in the zoom
> >     methods. This
> >     >>>> part I
> >     >>>>>>>     >>> would merge instantly, but there is an issue with
> >     caching the
> >     >>>> board
> >     >>>>>>>     >>> bounding box. It does not take into account that
> >     items already
> >     >>>>>>>     added to
> >     >>>>>>>     >>> board may change their position and affect the
> >     bounding box.
> >     >>>> I would
> >     >>>>>>>     >>> remove caching completely, what do you think?
> >     >>>>>>>     >>>
> >     >>>>>>>     >>> If you are going to modify the patch, would you
> rename
> >     >>>> boardBBox in
> >     >>>>>>>     >>> COMMON_TOOLS::ZoomFitScreen() to bbox or anything
> >     that is not
> >     >>>>>>>     related to
> >     >>>>>>>     >>> board? Thank you in advance.
> >     >>>>>>>     >>>
> >     >>>>>>>     >>> Regards,
> >     >>>>>>>     >>> Orson
> >     >>>>>>>     >>>
> >     >>>>>>>     >>> On 02/23/2017 05:34 AM, Jon Evans wrote:
> >     >>>>>>>     >>>> Hi all,
> >     >>>>>>>     >>>>
> >     >>>>>>>     >>>> This patch finishes off the refactor I did a few
> >     days ago, by
> >     >>>>>>>     enabling
> >     >>>>>>>     >>>> ZoomFitScreen to work without knowledge of the
> >     BOARD class.
> >     >>>>>>>     >>>>
> >     >>>>>>>     >>>> In order to make this work, I changed the way
> >     GetBoundingBox
> >     >>>> and
> >     >>>>>>>     >>>> ComputeBoundingBox work so that the call sites of
> >     >>>>>>>     GetBoundingBox don't
> >     >>>>>>>     >>> have
> >     >>>>>>>     >>>> to also call ComputeBoundingBox if they don't need
> >     to use the
> >     >>>>>>>     >>>> aBoardEdgesOnly flag.
> >     >>>>>>>     >>>>
> >     >>>>>>>     >>>> Those with good knowledge of BOARD should review
> >     this to make
> >     >>>>>>>     sure I
> >     >>>>>>>     >>> caught
> >     >>>>>>>     >>>> all the instances where we should mark the bounding
> >     box as
> >     >>>>>>>     needing to be
> >     >>>>>>>     >>>> re-computed.
> >     >>>>>>>     >>>>
> >     >>>>>>>     >>>> Best,
> >     >>>>>>>     >>>> Jon
> >     >>>>>>>     >>>>
> >     >>>>>>>     >>>>
> >     >>>>>>>     >>>>
> >     >>>>>>>     >>>> _______________________________________________
> >     >>>>>>>     >>>> Mailing list:
> >     https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     >>>>>>>     <https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-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/~kicad-developers>
> >     >>>>>>>     <https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-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/~kicad-developers>
> >     >>>>>>>     <https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-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/~kicad-developers>
> >     >>>>>>>     <https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-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/~kicad-developers>
> >     >>>>>>>     <https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-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/~kicad-developers>
> >     >>>>>>>     <https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-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/~kicad-developers>
> >     >>>>>>>     <https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-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/~kicad-developers>
> >     >>>>>>>     <https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-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/~kicad-developers>
> >     >>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> >     >>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     >>>>>> More help   : https://help.launchpad.net/ListHelp
> >     <https://help.launchpad.net/ListHelp>
> >     >>>>>>
> >     >>>>>
> >     >>>>>
> >     >>>>>
> >     >>>>>
> >     >>>>> _______________________________________________
> >     >>>>> Mailing list: https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     >>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> >     >>>>> Unsubscribe : https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     >>>>> More help   : https://help.launchpad.net/ListHelp
> >     <https://help.launchpad.net/ListHelp>
> >     >>>>>
> >     >>>>
> >     >>>>
> >     >>>> _______________________________________________
> >     >>>> Mailing list: https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     >>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> >     >>>> Unsubscribe : https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     >>>> More help   : https://help.launchpad.net/ListHelp
> >     <https://help.launchpad.net/ListHelp>
> >     >>>>
> >     >>>
> >     >>>
> >     >>
> >     >>
> >     >>
> >     >> _______________________________________________
> >     >> Mailing list: https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     >> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> >     >> Unsubscribe : https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     >> More help   : https://help.launchpad.net/ListHelp
> >     <https://help.launchpad.net/ListHelp>
> >     >>
> >     >
> >     >
> >     >
> >     >
> >     > _______________________________________________
> >     > Mailing list: https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     > Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> >     > Unsubscribe : https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     > More help   : https://help.launchpad.net/ListHelp
> >     <https://help.launchpad.net/ListHelp>
> >     >
> >
> >     _______________________________________________
> >     Mailing list: https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> >     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> >     Unsubscribe : https://launchpad.net/~kicad-developers
> >     <https://launchpad.net/~kicad-developers>
> >     More help   : https://help.launchpad.net/ListHelp
> >     <https://help.launchpad.net/ListHelp>
> >
> >
>

Attachment: 0001-Move-ZoomFitScreen-and-ZoomPreset-from-PCBNEW_CONTRO.patch
Description: Binary data

Attachment: 0001-Remove-BOARD-SetBoundingBox.patch
Description: Binary data


Follow ups

References