]> jfr.im git - irc/quakenet/qwebirc.git/commitdiff
Fix scrolling in alternate window bug.
authorChris Porter <redacted>
Wed, 15 Oct 2008 05:02:17 +0000 (06:02 +0100)
committerChris Porter <redacted>
Wed, 15 Oct 2008 05:02:17 +0000 (06:02 +0100)
Fix hilighting bug.

js/ui/baseui.js
js/ui/baseuiwindow.js
js/ui/qui.js

index 60b1b1269e200101fc117204e9b80de571510940..0842f5ceb289612d5f0cc36c8d2716a0bcc8ee3a 100644 (file)
@@ -5,7 +5,8 @@ var WINDOW_CHANNEL = 3;
 var BaseUI = new Class({
   Implements: [Events, Options],
   options: {
-    appTitle: "QuakeNet Web IRC"
+    appTitle: "QuakeNet Web IRC",
+    singleWindow: true
   },
   initialize: function(parentElement, windowClass, uiName, options) {
     this.setOptions(options);
index eab089a2ee837c9788c71d4ff58a0be37ac67f81..e478a4090bc844664461d2fdf5677a5499c6149a 100644 (file)
@@ -10,6 +10,7 @@ var UIWindow = new Class({
     this.hilighted = false;
     this.scrolltimer = null;
     this.commandhistory = this.parentObject.commandhistory;
+    this.scrolleddown = false;
     //new CommandHistory();
   },
   updateNickList: function(nicks) {
@@ -30,8 +31,17 @@ var UIWindow = new Class({
     this.parentObject.__setActiveWindow(this);
     if(this.hilighted)
       this.setHilighted(false);
+    if(this.scrolleddown)
+      this.__scrollToBottom();
   },
   deselect: function() {
+    if(!this.parentObject.singleWindow)
+      this.scrolleddown = this.__scrolledDown();
+    if($defined(this.scrolltimer)) {
+      $clear(this.scrolltimer);
+      this.scrolltimer = null;
+    }
+
     this.active = false;
   },
   addLine: function(type, line, colour, element, parent, scrollparent) {
@@ -51,27 +61,41 @@ var UIWindow = new Class({
   setHilighted: function(state) {
     this.hilighted = state;
   },
-  scrollAdd: function(element) {
+  __scrolledDown: function() {
+    if(this.scrolltimer)
+      return true;
+      
     var parent = this.lines;
-    var scrollparent = parent;
     
-    if($defined(this.scroller))
-      scrollparent = this.scroller;
-      
     var prev = parent.getScroll();
     var prevbottom = parent.getScrollSize().y;
     var prevsize = parent.getSize();
+    //alert("1: " + (prev.y + prevsize.y) + " 2:" + prevbottom);
+    return prev.y + prevsize.y == prevbottom;
+  },
+  __scrollToBottom: function() {
+    var parent = this.lines;
+    var scrollparent = parent;
+
+    if($defined(this.scroller))
+      scrollparent = this.scroller;
+      
+    scrollparent.scrollTo(parent.getScroll().x, parent.getScrollSize().y);
+  },
+  scrollAdd: function(element) {
+    var parent = this.lines;
     
     /* scroll in bursts, else the browser gets really slow */
     if($defined(element)) {
+      var sd = this.__scrolledDown();
       parent.appendChild(element);
-      if(this.scrolltimer || (prev.y + prevsize.y == prevbottom)) {
+      if(sd) {
         if(this.scrolltimer)
           $clear(this.scrolltimer);
-        this.scrolltimer = this.scrollAdd.delay(50, this, [null, null]);
+        this.scrolltimer = this.scrollAdd.delay(50, this, [null]);
       }
     } else {
-      scrollparent.scrollTo(prev.x, parent.getScrollSize().y);
+      this.__scrollToBottom();
       this.scrolltimer = null;
     }
   },
index 79446a413c9b209bd49d047e77885c1b5df9dc7f..4de657f01761b845da7d30530e203f9f4432ac25 100644 (file)
@@ -123,11 +123,10 @@ var QUIWindow = new Class({
     Colourise(topic, t);
   },
   select: function() {
-    this.parent();
-    
     this.window.removeClass("tab-invisible");
     this.tab.removeClass("tab-unselected");
     this.tab.addClass("tab-selected");
+    this.parent();
   },
   deselect: function() {
     this.parent();
@@ -160,9 +159,9 @@ var QUIWindow = new Class({
     this.parent(state);
     
     if(state) {
-      this.tab.addClass("tab-highlighted");
+      this.tab.addClass("tab-hilighted");
     } else {
-      this.tab.removeClass("tab-highlighted");
+      this.tab.removeClass("tab-hilighted");
     }
   }
 });