diff --git a/app/js/directives.js b/app/js/directives.js index 857bc964..26be777f 100755 --- a/app/js/directives.js +++ b/app/js/directives.js @@ -1231,7 +1231,7 @@ angular.module('myApp.directives', ['myApp.filters']) var dragStarted, dragTimeout; var submitBtn = $('.im_submit', element)[0]; - new EmojiTooltip(emojiButton, { + var emojiTooltip = new EmojiTooltip(emojiButton, { getStickers: function (callback) { AppStickersManager.getStickers().then(function () { AppStickersManager.getStickersImages().then(function (stickersData) { @@ -1372,6 +1372,9 @@ angular.module('myApp.directives', ['myApp.filters']) if (!Config.Navigator.touch) { composer.focus(); } + if (emojiTooltip) { + emojiTooltip.hide(); + } }); $scope.$on('ui_peer_reply', function () { onContentLoaded(function () { diff --git a/app/js/message_composer.js b/app/js/message_composer.js index 788c6167..101e8999 100644 --- a/app/js/message_composer.js +++ b/app/js/message_composer.js @@ -166,6 +166,11 @@ function EmojiTooltip (btnEl, options) { } return cancelEvent(e); }); + $(document).on('mousedown', function (e) { + if (self.shown) { + self.hide(); + } + }); } EmojiTooltip.prototype.onMouseEnter = function (triggerShow) { @@ -191,6 +196,21 @@ EmojiTooltip.prototype.onMouseLeave = function (triggerUnshow) { } }; +EmojiTooltip.prototype.getScrollWidth = function() { + var outer = $('
').css({ + position: 'absolute', + width: 100, + height: 100, + overflow: 'scroll', + top: -9999 + }).appendTo($(document.body)); + + var scrollbarWidth = outer[0].offsetWidth - outer[0].clientWidth; + outer.remove(); + + return scrollbarWidth; +}; + EmojiTooltip.prototype.createTooltip = function () { @@ -207,6 +227,13 @@ EmojiTooltip.prototype.createTooltip = function () { this.footerEl = $('.composer_emoji_tooltip_footer', this.tooltip); this.settingsEl = $('.composer_emoji_tooltip_settings', this.tooltip); + var scrollWidth = this.getScrollWidth(); + if (scrollWidth > 0) { + this.tooltipEl.css({ + width: parseInt(this.tooltipEl.css('width')) + scrollWidth + }); + } + angular.forEach(['recent', 'smile', 'flower', 'bell', 'car', 'grid', 'stickers'], function (tabName, tabIndex) { var tab = $('') .on('mousedown', function (e) { @@ -363,8 +390,10 @@ EmojiTooltip.prototype.show = function () { }; EmojiTooltip.prototype.hide = function () { - this.tooltipEl.removeClass('composer_emoji_tooltip_shown'); - this.btnEl.removeClass('composer_emoji_insert_btn_on'); + if (this.tooltipEl) { + this.tooltipEl.removeClass('composer_emoji_tooltip_shown'); + this.btnEl.removeClass('composer_emoji_insert_btn_on'); + } delete this.hideTimeout; delete this.shown; }; diff --git a/app/js/services.js b/app/js/services.js index d1276e49..77578e88 100755 --- a/app/js/services.js +++ b/app/js/services.js @@ -637,7 +637,7 @@ angular.module('myApp.services', ['myApp.i18n', 'izhukov.utils']) } chatFull.thumb = { - placeholder: 'img/placeholders/GroupAvatar'+((Math.abs(id) % 4) + 1)+'@2x.png', + placeholder: 'img/placeholders/GroupAvatar'+(Config.Mobile ? chat.num : Math.ceil(chat.num / 2))+'@2x.png', location: chat && chat.photo && chat.photo.photo_small, width: 72, height: 72, diff --git a/app/partials/mobile/chat_modal.html b/app/partials/mobile/chat_modal.html index aac54213..88370562 100644 --- a/app/partials/mobile/chat_modal.html +++ b/app/partials/mobile/chat_modal.html @@ -49,12 +49,14 @@
- + + +