]> jfr.im git - irc/quakenet/qwebirc.git/blobdiff - js/ui/frontends/qui.js
Don't use WindowsException.
[irc/quakenet/qwebirc.git] / js / ui / frontends / qui.js
index 4b8d697a183fa9591cdb30dceab8c36dbfd489e9..31f8b2e1e56af3617c04fe51226a79a91255557f 100644 (file)
@@ -21,11 +21,11 @@ qwebirc.ui.QUI = new Class({
     
     this.outerTabs = this.qjsui.top;
 
-    this.__createDropdownMenu();
-    this.__createDropdownHint();
-    
     this.tabs = new Element("div");
     this.tabs.addClass("tabbar");
+    
+    this.__createDropdownMenu();
+    
     this.outerTabs.appendChild(this.tabs);
     this.origtopic = this.topic = this.qjsui.topic;
     this.origlines = this.lines = this.qjsui.middle;
@@ -49,16 +49,20 @@ qwebirc.ui.QUI = new Class({
     
     this.createInput();
     this.reflow();
+
+    /* HACK, in Chrome this should work immediately but doesn't */
+    this.__createDropdownHint.delay(100, this);
   },
   __createDropdownMenu: function() {
-    var dropdownMenu = new Element("div");
+    var dropdownMenu = new Element("span");
     dropdownMenu.addClass("dropdownmenu");
     
     dropdownMenu.hide = function() {
       dropdownMenu.setStyle("display", "none");
       dropdownMenu.visible = false;
+      document.removeEvent("mousedown", hideEvent);
     }.bind(this);
-    document.addEvent("mousedown", function() { dropdownMenu.hide() });
+    var hideEvent = function() { dropdownMenu.hide(); };
     
     dropdownMenu.hide();
     this.parentElement.appendChild(dropdownMenu);
@@ -88,32 +92,33 @@ qwebirc.ui.QUI = new Class({
     dropdownEffect.start(1);
     
     this.outerTabs.appendChild(dropdown);
-    dropdownMenu.show = function(x){
+    dropdownMenu.show = function(x) {
       new Event(x).stop();
+      this.hideHint();
       
       if(dropdownMenu.visible) {
         dropdownMenu.hide();
         return;
       }
-/*
-      var left = x.client.x;
-      var top = x.client.y;
-      */
-      /* -1 == border */
-      var top = this.lines.getCoordinates().top;
-        
+      var top = this.outerTabs.getSize().y;
+      
       dropdownMenu.setStyle("left", 0);
       dropdownMenu.setStyle("top", top-1); /* -1 == top border */
       dropdownMenu.setStyle("display", "inline-block");
       dropdownMenu.visible = true;
+      
+      document.addEvent("mousedown", hideEvent);
     }.bind(this);
+    dropdown.addEvent("mousedown", function(e) { new Event(e).stop(); });
     dropdown.addEvent("click", dropdownMenu.show);
   },
-  __createDropdownHint: function() {    
+  __createDropdownHint: function() {
     var dropdownhint = new Element("div");
     dropdownhint.addClass("dropdownhint");
     dropdownhint.set("text", "Click the icon for the main menu.");
-        
+    dropdownhint.setStyle("top", this.outerTabs.getSize().y + 5);
+
+    this.parentElement.appendChild(dropdownhint);
     new Fx.Morph(dropdownhint, {duration: "normal", transition: Fx.Transitions.Sine.easeOut}).start({left: [900, 5]});
     
     var hider = function() {
@@ -123,15 +128,15 @@ qwebirc.ui.QUI = new Class({
     var hider2 = function() {
       if(dropdownhint.hidden)
         return;
-        this.parentElement.removeChild(dropdownhint);
+      this.parentElement.removeChild(dropdownhint);
       dropdownhint.hidden = 1;
     }.bind(this);
     hider2.delay(4000);
+    this.hideHint = hider2;
     
     document.addEvent("mousedown", hider2);
     document.addEvent("keypress", hider2);
     
-    this.parentElement.appendChild(dropdownhint);
   },
   createInput: function() {
     var form = new Element("form");
@@ -279,20 +284,20 @@ qwebirc.ui.QUI.JSUI = new Class({
     var mheight = (docsize.y - topsize.y - bottomsize.y - topicsize.y);
     var mwidth = (docsize.x - rightsize.x);
 
-    topic.setStyle("top", topsize.y + "px");
+    topic.setStyle("top", topsize.y);
     
-    middle.setStyle("top", (topsize.y + topicsize.y) + "px");
+    middle.setStyle("top", (topsize.y + topicsize.y));
     if(mheight > 0) {
-      middle.setStyle("height", mheight + "px");
-      right.setStyle("height", mheight + "px");
+      middle.setStyle("height", mheight);
+      right.setStyle("height", mheight);
     }
     
     if(mwidth > 0)
-      middle.setStyle("width", mwidth + "px");
-    right.setStyle("top", (topsize.y + topicsize.y) + "px");
-    right.setStyle("left", mwidth + "px");
+      middle.setStyle("width", mwidth);
+    right.setStyle("top", (topsize.y + topicsize.y));
+    right.setStyle("left", mwidth);
     
-    bottom.setStyle("top", (docsize.y - bottomsize.y) + "px");
+    bottom.setStyle("top", (docsize.y - bottomsize.y));
     this.fireEvent("reflow");
   },
   showChannel: function(state) {
@@ -479,10 +484,6 @@ qwebirc.ui.QUI.Window = new Class({
       e.menu = this.createMenu(x.realNick, e);
       new Event(x).stop();
     }.bind(this));
-    e.addEvent("dblclick", function(x) {
-      new Event(x).stop();
-      this.client.exec("/QUERY " + e.realNick);
-    }.bind(this));
     
     e.addEvent("focus", function() { this.blur() }.bind(e));
     this.moveMenuClass();
@@ -552,7 +553,7 @@ qwebirc.ui.QUI.Window = new Class({
     this.parent(type, line, colourClass, e);
   },
   setHilighted: function(state) {
-    laststate = this.hilighted;
+    var laststate = this.hilighted;
     
     this.parent(state);