title: Matlab, GUI, Scrolling content in Pane. How to hide overflow?
body: <p>I am trying to make a Matlab GUI that has a panel with scrolling content inside of a larger figure. I am having a problem hiding the overflow content when it scrolls out of the subpanel.</p>
  
  <p>I got the code for the scrollbar from this SO post: <a href="https://stackoverflow.com/questions/7545469/adding-scroll-bar-in-subplots-within-gui">Adding scroll bar in subplots within GUI</a></p>
  
  <p>Try the code below. I have a figure, an outer panel (smaller than the figure, child to the figure), a scrolling panel (with a height greater than the figure, child to outer panel), a scroll bar, and a text field to appear in the scrolling pane (child to the scrolling panel).</p>
  
  <p>When you try the code you will see the text string, which is just the alphabet repeated, scrolls up and down the whole length of the figure, but the scrolling panel stops at the edge of the limits of the outer panel.</p>
  
  <p>How can I correct this problem. Thanks.</p>
  
  <pre><code>function guitest
      scrsz = get(0,'ScreenSize');
  
      height = scrsz(4)*7/8;
      width = scrsz(3)*2/3;
      leftmargin = 10;
      rightmargin = 10;
  
      % figure 
      handles.hFig = figure('Visible','on',...
                      'Position', [scrsz(3)/8 scrsz(4)/10 width height],...
                  'Name', 'Tap Toolbar Report',...
                  'NumberTitle', 'off',...
                  'Color', [0.75 0.75 0.75],...
                  'ToolBar','none',...
                  'MenuBar','none',...
                  'Resize','off');
  
      % subpanel in the figure for scrolling
      handles.hOut = uipanel('Parent',handles.hFig,...
                    'BackgroundColor', [0.85 0.85 0.85],...
                    'BorderWidth', 0,...
                    'Units', 'pixels',...
                    'Position',[leftmargin 100 width-2*leftmargin height-200]);
  
      hPanheight = 2000;
  
      handles.hPan = uipanel('Parent',handles.hOut,...
                'BackgroundColor', [0.85 0.85 0.85],...
                'BorderWidth', 0,...
                'Units', 'pixels',...
                'Position',[0 0 width-2*leftmargin-19 hPanheight]);
  
      str = sprintf('a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nx\ny\nz\na\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nx\ny\nz\na\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nx\ny\nz\na\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nx\ny\nz\na\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nx\ny\nz\na\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nx\ny\nz\na\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nx\ny\nz\na\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl\nm\nn\no\np\nq\nr\ns\nt\nu\nv\nx\ny\nz');
      uicontrol('Parent', handles.hPan,'Style','text','String',str,'FontSize', 10,'FontWeight','bold', 'HorizontalAlignment', 'left',...
              'Position',[10 20 20 1960],'BackgroundColor', [0.85 0.85 0.85]);          
  
      handles.hSld = uicontrol('Style', 'slider',...
                  'BackgroundColor', [0.8 0.8 0.8], ...
                  'Position', [width-leftmargin-20 101 19 height-202],...
                  'Callback', {@onSlide,handles.hPan,handles.hOut});
      set(handles.hSld,'Value',1);
      onSlide(handles.hSld,'',handles.hPan,handles.hOut)
  end 
  
  function onSlide(hSld,~,hPan,hOut)
      %# slider value
      offset = get(hSld,'Value');
  
      %# update panel position
      p = get(hPan, 'Position');  %# panel current position
      ph = get(hOut, 'Position');
      set(hPan, 'Position',[p(1) -offset*(p(4)-ph(4)) p(3) p(4)])
  end
  </code></pre>