def _prefetch_items(self,change):
        """ When the current_row in the model changes (whether from scrolling) or
        set by the application. Make sure the results are loaded!
        
        """
        if self.is_initialized:
            view = self.item_view
            
            upper_limit = view.iterable_index+view.iterable_fetch_size-view.iterable_prefetch
            lower_limit = max(0,view.iterable_index+view.iterable_prefetch)
            offset = int(view.iterable_fetch_size/2.0)
            upper_visible_row = view.visible_rect[2]
            lower_visible_row = view.visible_rect[0]
            print("Visible rect = %s"%view.visible_rect)
            
            if upper_visible_row >= upper_limit:
                next_index = max(0,upper_visible_row-offset) # Center on current row
                # Going up works... 
                if next_index>view.iterable_index:
                    print("Auto prefetch upper limit %s!"%upper_limit)
                    view.iterable_index = next_index
                    #view.model().reset()
                    
            # But doewn doesnt?
            elif view.iterable_index>0 and lower_visible_row < lower_limit:
                next_index = max(0,lower_visible_row-offset) # Center on current row
                # Going down works
                if next_index<view.iterable_index:
                    print("Auto prefetch lower limit=%s, iterable=%s, setting next=%s!"%(lower_limit,view.iterable_index,next_index))
                    view.iterable_index = next_index
When the current_row in the model changes (whether from scrolling) or
        set by the application. Make sure the results are loaded!