From 642ccd27ab9ce3bfcc5d0bbec4910268b4cadb28 Mon Sep 17 00:00:00 2001
From: Bart Visscher <bartv@thisnet.nl>
Date: Thu, 1 Mar 2012 20:46:34 +0100
Subject: [PATCH] Bookmarks: fix loading and displaying of the bookmarks

---
 apps/bookmarks/css/bookmarks.css |  4 +++-
 apps/bookmarks/js/bookmarks.js   | 19 ++++++++++++++++---
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/apps/bookmarks/css/bookmarks.css b/apps/bookmarks/css/bookmarks.css
index b1139f2c34..3a3e0fbf6b 100644
--- a/apps/bookmarks/css/bookmarks.css
+++ b/apps/bookmarks/css/bookmarks.css
@@ -17,7 +17,9 @@
 }
 
 .bookmarks_list {
-	margin-top: 36px;
+	overflow: auto;
+	position: fixed;
+	top: 6.5em;
 }
 
 .bookmarks_addBml {
diff --git a/apps/bookmarks/js/bookmarks.js b/apps/bookmarks/js/bookmarks.js
index 7317a154a7..fa5adde254 100644
--- a/apps/bookmarks/js/bookmarks.js
+++ b/apps/bookmarks/js/bookmarks.js
@@ -5,7 +5,11 @@ var bookmarks_sorting = 'bookmarks_sorting_recent';
 
 $(document).ready(function() {	
 	$('#bookmark_add_submit').click(addOrEditBookmark);
-	$(window).scroll(updateOnBottom);
+	$(window).resize(function () {
+		fillWindow($('.bookmarks_list'));
+	});
+	$(window).resize();
+	$($('.bookmarks_list')).scroll(updateOnBottom);
 	
 	$('.bookmarks_list').empty();
 	getBookmarks();
@@ -21,7 +25,9 @@ function getBookmarks() {
 		url: 'ajax/updateList.php',
 		data: 'tag=' + encodeURI($('#bookmarkFilterTag').val()) + '&page=' + bookmarks_page + '&sort=' + bookmarks_sorting,
 		success: function(bookmarks){
-			bookmarks_page += 1;
+			if (bookmarks.data.length) {
+				bookmarks_page += 1;
+			}
 			$('.bookmark_link').unbind('click', recordClick);
 			$('.bookmark_delete').unbind('click', delBookmark);
 			$('.bookmark_edit').unbind('click', showBookmark);
@@ -39,6 +45,9 @@ function getBookmarks() {
 			$('.bookmark_edit').click(showBookmark);
 			
 			bookmarks_loading = false;
+			if (bookmarks.data.length) {
+				updateOnBottom()
+			}
 		}
 	});	
 }
@@ -146,7 +155,11 @@ function updateBookmarksList(bookmark) {
 
 function updateOnBottom() {
 	//check wether user is on bottom of the page
-	if ($('body').height() <= ($(window).height() + $(window).scrollTop())) {
+	var top = $('.bookmarks_list>:last-child').position().top;
+	var height = $('.bookmarks_list').height();
+	// use a bit of margin to begin loading before we are really at the
+	// bottom
+	if (top < height * 1.2) {
 		getBookmarks();
 	}
 }
-- 
GitLab