--- mythvideo/mythvideo/videogallery.cpp	2008-09-19 03:43:19.000000000 -0600
+++ mythvideo/mythvideo/videogallery.cpp.new	2008-09-19 03:27:28.000000000 -0600
@@ -783,11 +783,22 @@ void VideoGallery::positionIcon()
 
     // determine which part of the list is shown
     computeLastRowCol(where_we_are->siblingCount());
-    topRow = QMIN(currRow, QMAX(lastRow - nRows + 1, 0));
+    
+    GenericTree *lparent = where_we_are->getParent();
+    if (lparent && lparent != video_tree_root)
+        topRow = QMIN(currRow, QMAX(lastRow - nRows + 1, 0));
+    else
+        topRow = mainTopRow;
 }
 
 void VideoGallery::handleDirSelect()
 {
+
+    // Set the main top row if we are leaving video tree root
+    GenericTree *lparent = where_we_are->getParent();
+    if (lparent && lparent == video_tree_root)
+        mainTopRow = topRow;
+    
     // move one node down in the video tree
     int list_count = where_we_are->childCount();
     if (list_count > 0)  // should be
--- mythvideo/mythvideo/videogallery.h	2008-09-19 03:43:19.000000000 -0600
+++ mythvideo/mythvideo/videogallery.h.new	2008-09-19 03:20:33.000000000 -0600
@@ -75,6 +75,7 @@ class VideoGallery : public VideoDialog
     int lastRow;
     int lastCol;
     int topRow;
+    int mainTopRow;
     int nRows;
     int nCols;
 

