From d3a8b2b217e48ffc6bca2b12c01f63a715081c8e Mon Sep 17 00:00:00 2001 From: Maxime Poulin Date: Sat, 19 Mar 2016 14:20:11 -0400 Subject: [PATCH] Add a menu where the Leave button was --- client/css/style.css | 22 ++++++++++++++++------ client/js/lounge.js | 40 +++++++++++++++++++++++++++------------- client/views/chat.tpl | 3 ++- 3 files changed, 45 insertions(+), 20 deletions(-) diff --git a/client/css/style.css b/client/css/style.css index 9448af21..31cad81e 100644 --- a/client/css/style.css +++ b/client/css/style.css @@ -189,7 +189,8 @@ button, } #viewport .lt, -#viewport .rt { +#viewport .rt, +#chat button.menu { color: #ccc; display: none; float: left; @@ -213,10 +214,23 @@ button, -moz-osx-font-smoothing: grayscale; } +#chat button.menu:before { + font: 14px FontAwesome; + content: "\f142"; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + #viewport .rt { display: block; float: right; - margin: 6px -12px 0 12px; + margin: 6px -12px 0 0; +} + +#chat button.menu { + display: block; + float: right; + margin: 6px -8px 0 12px; } #viewport.rt #chat .sidebar { @@ -1576,10 +1590,6 @@ button, display: block; } - #viewport .rt { - margin-left: 18px; - } - #windows .window .header { display: block; } diff --git a/client/js/lounge.js b/client/js/lounge.js index cbea41ef..2593424c 100644 --- a/client/js/lounge.js +++ b/client/js/lounge.js @@ -491,27 +491,32 @@ $(function() { } }); - function positionContextMenu(e) { - var top, left; + function positionContextMenu(that, e) { + var offset; var menuWidth = contextMenu.outerWidth(); var menuHeight = contextMenu.outerHeight(); - if ((window.innerWidth - e.pageX) < menuWidth) { - left = window.innerWidth - menuWidth; - } else { - left = e.pageX; + if (that.hasClass("menu")) { + offset = that.offset(); + offset.left -= menuWidth - that.outerWidth(); + offset.top += that.outerHeight(); + return offset; } - if ((window.innerHeight - e.pageY) < menuHeight) { - top = window.innerHeight - menuHeight; - } else { - top = e.pageY; + offset = {left: e.pageX, top: e.pageY}; + + if ((window.innerWidth - offset.left) < menuWidth) { + offset.left = window.innerWidth - menuWidth; } - return {left: left, top: top}; + if ((window.innerHeight - offset.top) < menuHeight) { + offset.top = window.innerHeight - menuHeight; + } + + return offset; } - viewport.on("contextmenu", ".user, .network .chan", function(e) { + function showContextMenu(that, e) { var target = $(e.currentTarget); var output = ""; @@ -538,9 +543,18 @@ $(function() { contextMenuContainer.show(); contextMenu .html(output) - .css(positionContextMenu(e)); + .css(positionContextMenu($(that), e)); return false; + } + + viewport.on("contextmenu", ".user, .network .chan", function(e) { + return showContextMenu(this, e); + }); + + viewport.on("click", "#chat .menu", function(e) { + e.currentTarget = $(e.currentTarget).closest(".chan")[0]; + return showContextMenu(this, e); }); contextMenuContainer.on("click contextmenu", function() { diff --git a/client/views/chat.tpl b/client/views/chat.tpl index 7bd8793e..cf929e92 100644 --- a/client/views/chat.tpl +++ b/client/views/chat.tpl @@ -1,10 +1,11 @@ {{#each channels}} -
+
{{#equal type "channel"}} {{/equal}} + {{name}} {{{parse topic}}}