]> git.wh0rd.org - tt-rss.git/blobdiff - js/viewfeed.js
rework floatingtitle
[tt-rss.git] / js / viewfeed.js
index 1c5811fe75a721ccac3ab25828c5e3d73b49decd..ec7706547d47893d6e3568397acbb6c0ba2c5a44 100644 (file)
@@ -1274,6 +1274,7 @@ function headlines_scroll_handler(e) {
 
                // set topmost child in the buffer as active
                if (getInitParam("cdm_auto_catchup") == 1 &&
+                               getSelectedArticleIds2().length <= 1 &&
                                (!isCdmMode() || getInitParam("cdm_expanded"))) {
                        var rows = $$("#headlines-frame > div[id*=RROW]");
 
@@ -2214,25 +2215,54 @@ function openSelectedAttachment(elem) {
        }
 }
 
+function scrollToRowId(id) {
+       try {
+               var row = $(id);
+
+               if (row)
+                       $("headlines-frame").scrollTop = row.offsetTop;
+
+       } catch (e) {
+               exception_error("scrollToRowId", e);
+       }
+}
+
 function updateFloatingTitle() {
        try {
                var hf = $("headlines-frame");
                var child = $("RROW-" + _active_article_id);
 
-               if (child && child.offsetTop + child.offsetHeight > hf.scrollTop) {
+               var elems;
 
-                       var header = child.getElementsByClassName("cdmHeader")[0];
+               if (getInitParam("cdm_auto_catchup"))
+                       elems = [$$("RROW-" + _active_article_id)];
+               else
+                       elems = $$("#headlines-frame > div[id*=RROW]");
 
-                       if (child.id != $("floatingTitle").getAttribute("rowid")) {
-                               $("floatingTitle").setAttribute("rowid", child.id);
-                               $("floatingTitle").innerHTML = header.innerHTML;
-                       }
+               for (var i = 0; i < elems.length; i++) {
 
-                       if (child.offsetTop < hf.scrollTop - header.offsetHeight - 100 &&
-                                       child.offsetTop + child.offsetHeight - hf.scrollTop > 100)
-                               Element.show("floatingTitle");
-                       else
-                               Element.hide("floatingTitle");
+                       var child = elems[i];
+
+                       if (child && child.offsetTop + child.offsetHeight > hf.scrollTop) {
+
+                               var header = child.getElementsByClassName("cdmHeader")[0];
+
+                               if (child.id != $("floatingTitle").getAttribute("rowid")) {
+                                       $("floatingTitle").setAttribute("rowid", child.id);
+                                       $("floatingTitle").innerHTML = header.innerHTML;
+                                       $("floatingTitle").firstChild.innerHTML = "<img class='anchor markedPic' src='images/page_white_go.png' onclick=\"scrollToRowId('"+child.id+"')\">" + $("floatingTitle").firstChild.innerHTML;
+
+                                       PluginHost.run(PluginHost.HOOK_FLOATING_TITLE, child);
+                               }
+
+                               if (child.offsetTop < hf.scrollTop - header.offsetHeight)
+                                       Element.show("floatingTitle");
+                               else
+                                       Element.hide("floatingTitle");
+
+                               return;
+
+                       }
                }
 
        } catch (e) {