=== modified file 'common/drawpanel.cpp'
--- common/drawpanel.cpp	2013-02-21 20:53:50 +0000
+++ common/drawpanel.cpp	2013-06-08 20:50:48 +0000
@@ -1161,6 +1161,31 @@
             screen->m_BlockLocate.SetOrigin( m_CursorStartPos );
         }
 
+        // if moving and autopan is enabled and requested, perform auto panning
+        if( ( screen->m_BlockLocate.GetState() == STATE_BLOCK_MOVE ) &&
+              m_enableAutoPan && m_requestAutoPan && !m_ignoreMouseEvents )
+        {
+            // Auto pan if mouse is leave working area:
+            wxSize size = GetClientSize();
+
+            // calculate the scrolling region as a percentage of viewable area
+            // such that attempting to exit the viewable area will cause panning to occur
+            float scrollMargin = 0.05;
+            float left = size.GetWidth() * scrollMargin;
+            float top = size.GetHeight() * scrollMargin;
+
+            wxRect internalRect( left, top,
+                                 size.GetWidth() - (left * 2),
+                                 size.GetHeight() - (top * 2));
+
+            if( !internalRect.Contains( event.GetX(), event.GetY() ) )
+            {
+                wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED, ID_POPUP_ZOOM_CENTER );
+                cmd.SetEventObject( this );
+                GetEventHandler()->ProcessEvent( cmd );
+            }
+        }
+
         if( event.LeftDown() || ( !m_enableMiddleButtonPan && event.MiddleDown() ) )
         {
             if( screen->m_BlockLocate.GetState() == STATE_BLOCK_MOVE )

