Suggestion implemented. New version attached. Jon Neal
On Fri, Aug 7, 2015 at 4:39 AM, Maciej Sumiński <maciej.sumin...@cern.ch> wrote: > If I may suggest something, how about wrapping the 4 lines to load > preferences into a function (e.g. EDA_DRAW_PANEL::LoadPreferences( const > EDA_DRAW_PANEL* aOther ))? > > Regards, > Orson > > On 08/07/2015 03:01 AM, Jon Neal wrote: > > This patch is to provide a general fix for bug #1468388. There is a patch > > attached to that bug, but Chris Pavline and I decided that it doesn't > make > > as much sense as this patch. > > > > The other patch adds a center on zoom option to the library editor > > preferences. It would be bad UI to require someone to change the > > preferences for all separate windows with a render. It was also missing > > three other UI preferences (use middle mouse to pan, limit panning, and > pan > > while moving object). > > > > I implemented this to send over these preferences from eeschema whenever > > the lib editor or viewer are opened. Same for pcbnew and footprint > > editor/viewer. Not the optimal solution since someone can leave the > > editors/viewers open and change preferences in eeschema/pcbnew so I added > > FIXME comments. > > > > On a separate and related note, I noticed that the code to open the > library > > viewer: > > > https://github.com/KiCad/kicad-source-mirror/blob/master/eeschema/sch_base_frame.cpp#L50 > > > > doesn't do the same checks when opening the window as the others do as > seen > > here: > > > https://github.com/KiCad/kicad-source-mirror/blob/master/eeschema/schframe.cpp#L1120 > > > > Not sure if that check should be added to the library viewer code to > > prevent any issues. Anyone know? > > > > Thanks, > > Jon Neal > > > > > > > > _______________________________________________ > > Mailing list: https://launchpad.net/~kicad-developers > > Post to : kicad-developers@lists.launchpad.net > > Unsubscribe : https://launchpad.net/~kicad-developers > > More help : https://help.launchpad.net/ListHelp > > > > >
diff --git a/common/draw_frame.cpp b/common/draw_frame.cpp index 1b5d3ad..e9cfb86 100644 --- a/common/draw_frame.cpp +++ b/common/draw_frame.cpp @@ -745,6 +745,16 @@ void EDA_DRAW_FRAME::UpdateMsgPanel() SetMsgPanel( item ); } +// FIXME: There needs to be a better way for child windows to load preferences. +// This function pushes four preferences from a parent window to a child window +// i.e. from eeschema to the schematic symbol editor +void EDA_DRAW_FRAME::PushPreferences( const EDA_DRAW_PANEL* aParentCanvas ) +{ + m_canvas->SetEnableZoomNoCenter( aParentCanvas->GetEnableZoomNoCenter() ); + m_canvas->SetEnableMiddleButtonPan( aParentCanvas->GetEnableMiddleButtonPan() ); + m_canvas->SetMiddleButtonPanLimited( aParentCanvas->GetMiddleButtonPanLimited() ); + m_canvas->SetEnableAutoPan( aParentCanvas->GetEnableAutoPan() ); +} wxString EDA_DRAW_FRAME::CoordinateToString( int aValue, bool aConvertToMils ) const { diff --git a/eeschema/sch_base_frame.cpp b/eeschema/sch_base_frame.cpp index f8a4fe2..52898e8 100644 --- a/eeschema/sch_base_frame.cpp +++ b/eeschema/sch_base_frame.cpp @@ -27,6 +27,7 @@ #include <libeditframe.h> #include <base_units.h> #include <kiway.h> +#include <class_drawpanel.h> // Sttaic members: @@ -51,6 +52,8 @@ void SCH_BASE_FRAME::OnOpenLibraryViewer( wxCommandEvent& event ) { LIB_VIEW_FRAME* viewlibFrame = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, true ); + viewlibFrame->PushPreferences( m_canvas ); + // On Windows, Raise() does not bring the window on screen, when iconized if( viewlibFrame->IsIconized() ) viewlibFrame->Iconize( false ); diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp index d0aa2f4..5e1c9d7 100644 --- a/eeschema/schframe.cpp +++ b/eeschema/schframe.cpp @@ -1123,6 +1123,8 @@ void SCH_EDIT_FRAME::OnOpenLibraryEditor( wxCommandEvent& event ) libeditFrame->Show( true ); } + libeditFrame->PushPreferences( m_canvas ); + // On Windows, Raise() does not bring the window on screen, when iconized if( libeditFrame->IsIconized() ) libeditFrame->Iconize( false ); diff --git a/include/draw_frame.h b/include/draw_frame.h index d88ca5c..6abdb05 100644 --- a/include/draw_frame.h +++ b/include/draw_frame.h @@ -726,6 +726,15 @@ public: virtual void UpdateMsgPanel(); /** + * Function PushPreferences + * Pushes a few preferences from a parent window to a child window. + * (i.e. from eeschema to schematic symbol editor) + * + * @param aParentCanvas is the parent canvas to push preferences from. + */ + void PushPreferences( const EDA_DRAW_PANEL* aParentCanvas ); + + /** * Function PrintPage * used to print a page * Print the page pointed by current screen, set by the calling print function diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index 8335d04..59ffffc 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -218,6 +218,8 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) if( wxWindow::FindFocus() != editor ) editor->SetFocus(); } + + editor->PushPreferences( m_canvas ); } break; @@ -244,6 +246,8 @@ void PCB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) if( wxWindow::FindFocus() != viewer ) viewer->SetFocus(); } + + viewer->PushPreferences( m_canvas ); } break;
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp