提交 66ab4c3c 编写于 作者: B Benjamin Pasero

title - fix message list positioning

上级 610e1ca5
......@@ -31,14 +31,12 @@
zoom: 1; /* prevent zooming */
}
.titlebar-style-custom .monaco-workbench.fullscreen .quick-open-widget,
.titlebar-style-custom .global-message-list {
.titlebar-style-custom .monaco-workbench.fullscreen .quick-open-widget {
top: 0;
}
.titlebar-style-custom .monaco-workbench .quick-open-widget,
.titlebar-style-custom .global-message-list {
top: 22px; /* push down quick open and messages when we have a custom title bar */
.titlebar-style-custom .monaco-workbench .quick-open-widget {
top: 22px; /* push down quick open when we have a custom title bar */
}
/* Theming */
......
......@@ -6,7 +6,6 @@
.global-message-list {
font-size: 12px;
position: absolute;
top: 0;
z-index: 300;
color: #eee;
list-style-type: none;
......
......@@ -10,6 +10,7 @@ import nls = require('vs/nls');
import { TPromise } from 'vs/base/common/winjs.base';
import { Builder, $ } from 'vs/base/browser/builder';
import DOM = require('vs/base/browser/dom');
import * as browser from 'vs/base/browser/browser';
import { toErrorMessage } from 'vs/base/common/errorMessage';
import aria = require('vs/base/browser/ui/aria/aria');
import types = require('vs/base/common/types');
......@@ -67,8 +68,6 @@ export class MessageList {
private _onMessagesShowing: Emitter<void>;
private _onMessagesCleared: Emitter<void>;
private initialTopPosition: number;
constructor(container: HTMLElement, usageLogger?: IUsageLogger, options: IMessageListOptions = { purgeInterval: MessageList.DEFAULT_MESSAGE_PURGER_INTERVAL, maxMessages: MessageList.DEFAULT_MAX_MESSAGES, maxMessageLength: MessageList.DEFAULT_MAX_MESSAGE_LENGTH }) {
this.messages = [];
this.messageListPurger = null;
......@@ -78,6 +77,12 @@ export class MessageList {
this._onMessagesShowing = new Emitter<void>();
this._onMessagesCleared = new Emitter<void>();
this.registerListeners();
}
private registerListeners(): void {
browser.onDidChangeFullscreen(() => this.positionMessageList());
}
public get onMessagesShowing(): Event<void> {
......@@ -171,7 +176,6 @@ export class MessageList {
// Lazily create, otherwise clear old
if (!this.messageListContainer) {
this.messageListContainer = $('.global-message-list').appendTo(container);
this.initialTopPosition = parseInt(this.messageListContainer.getComputedStyle().getPropertyValue('top'), 10) || 0;
} else {
$(this.messageListContainer).empty();
$(this.messageListContainer).removeClass('transition');
......@@ -199,12 +203,21 @@ export class MessageList {
if (animate) {
setTimeout(() => {
$(this.messageListContainer).addClass('transition');
$(this.messageListContainer).style('top', `${this.initialTopPosition}px`);
this.positionMessageList();
}, 50 /* Need this delay to reliably get the animation on some browsers */);
}
});
}
private positionMessageList(): void {
let position = 0;
if (!browser.isFullscreen() && DOM.hasClass(this.container, 'titlebar-style-custom')) {
position = 22 / browser.getZoomFactor(); // adjust the position based on title bar size and zoom factor
}
$(this.messageListContainer).style('top', `${position}px`);
}
private renderMessage(message: IMessageEntry, container: Builder, total: number, delta: number): void {
container.li({ class: 'message-list-entry message-list-entry-with-action' }, (li) => {
......
......@@ -54,7 +54,7 @@ export class MessageService extends WorkbenchMessageService implements IChoiceSe
return result === 0 ? true : false;
}
choose(severity: Severity, message: string, options: string[], modal: boolean = false): TPromise<number> {
public choose(severity: Severity, message: string, options: string[], modal: boolean = false): TPromise<number> {
if (modal) {
const type: 'none' | 'info' | 'error' | 'question' | 'warning' = severity === Severity.Info ? 'question' : severity === Severity.Error ? 'error' : severity === Severity.Warning ? 'warning' : 'none';
return TPromise.wrap(this.showMessageBox({ message, buttons: options, type }));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册