qwebirc.ui.HILIGHT_SPEECH = 2;
qwebirc.ui.HILIGHT_US = 3;
+qwebirc.ui.MAXIMUM_LINES_PER_WINDOW = 1000;
+
qwebirc.ui.WINDOW_LASTLINE = qwebirc.ui.WINDOW_QUERY | qwebirc.ui.WINDOW_MESSAGES | qwebirc.ui.WINDOW_CHANNEL | qwebirc.ui.WINDOW_STATUS;
qwebirc.ui.Window = new Class({
var prev = parent.getScroll();
var prevbottom = parent.getScrollSize().y;
- var prevsize = parent.getSize();
-
- /* fixes an IE bug */
- if(prevbottom < prevsize.y)
- prevbottom = prevsize.y;
+ var prevheight = parent.clientHeight;
+
+ /*
+ * fixes an IE bug: the scrollheight is less than the actual height
+ * when the div isn't full
+ */
+ if(prevbottom < prevheight)
+ prevbottom = prevheight;
- return prev.y + prevsize.y == prevbottom;
+ return prev.y + prevheight == prevbottom;
},
getScrollParent: function() {
var scrollparent = this.lines;
if($defined(element)) {
var sd = this.scrolledDown();
parent.appendChild(element);
+ if(parent.childNodes.length > qwebirc.ui.MAXIMUM_LINES_PER_WINDOW)
+ parent.removeChild(parent.firstChild);
if(sd) {
if(this.scrolltimer)
$clear(this.scrolltimer);
if(!this.lastPositionLineInserted) {
this.scrollAdd(this.lastPositionLine);
} else if(this.lines.lastChild != this.lastPositionLine) {
- this.lines.removeChild(this.lastPositionLine);
+ try {
+ this.lines.removeChild(this.lastPositionLine);
+ } catch(e) {
+ /* IGNORE, /clear removes lastPositionLine from the dom without resetting it. */
+ }
this.scrollAdd(this.lastPositionLine);
}
} else {