一些修复

This commit is contained in:
joyqi 2013-10-25 10:10:29 +08:00
parent da52126a42
commit 7c6b067f59
2 changed files with 36 additions and 43 deletions

View File

@ -3179,8 +3179,9 @@ else
that.refreshPreview();
}
}
uiManager = new UIManager(idPostfix, panels, undoManager, previewManager, commandManager, options.helpButton, getString);
fullScreenManager = new FullScreenManager(hooks);
uiManager = new UIManager(idPostfix, panels, undoManager, previewManager, commandManager, fullScreenManager, options.helpButton, getString);
uiManager.setUndoRedoButtonStates();
var forceRefresh = that.refreshPreview = function () { previewManager.refresh(true); };
@ -4268,7 +4269,7 @@ else
}, 0);
};
function UIManager(postfix, panels, undoManager, previewManager, commandManager, helpOptions, getString) {
function UIManager(postfix, panels, undoManager, previewManager, commandManager, fullScreenManager, helpOptions, getString) {
var inputBox = panels.input,
buttons = {}; // buttons.undo, buttons.link, etc. The actual DOM elements.
@ -4561,7 +4562,8 @@ else
buttons.redo = makeButton("wmd-redo-button", redoTitle, "-220px", null);
buttons.redo.execute = function (manager) { if (manager) manager.redo(); };
buttons.fullscreen = makeButton("wmd-fullscreen-button", getString("fullscreen"), "-240px", bindCommand("doFullScreen"));
buttons.fullscreen = makeButton("wmd-fullscreen-button", getString("fullscreen"), "-240px", null);
buttons.fullscreen.execute = function () { fullScreenManager.doFullScreen(); };
if (helpOptions) {
var helpButton = document.createElement("li");
@ -5284,11 +5286,16 @@ else
chunk.selection = "";
}
var getFullScreenAdapter = function () {
function FullScreenManager (hooks) {
this.fullScreenBind = false;
this.hooks = hooks;
}
function getFullScreenAdapter () {
var selector = {
fullScreenChange : ['onfullscreenchange', 'onwebkitfullscreenchange', 'onmozfullscreenchange'],
requestFullscreen : ['requestFullscreen', 'webkitRequestFullScreen', 'mozRequestFullScreen'],
cancelFullscreen : ['cancelFullscreen', 'webkitCancelFullScreen', 'mozCancelFullScreen']
fullScreenChange : ['onfullscreenchange', 'onwebkitfullscreenchange', 'onmozfullscreenchange', 'onmsfullscreenchange'],
requestFullscreen : ['requestFullscreen', 'webkitRequestFullScreen', 'mozRequestFullScreen', 'msRequestFullScreen'],
cancelFullscreen : ['cancelFullscreen', 'exitFullScreen', 'webkitCancelFullScreen', 'mozCancelFullScreen', 'msCancelFullScreen']
}, adapter = {};
for (var name in selector) {
@ -5312,23 +5319,21 @@ else
return adapter;
};
var isFullScreen = function () {
function isFullScreen () {
return document.fullScreen ||
document.mozFullScreen ||
document.webkitIsFullScreen;
};
var fullScreenBind = false;
// fullscreen
commandProto.doFullScreen = function (chunk, postProcessing) {
FullScreenManager.prototype.doFullScreen = function (chunk, postProcessing) {
var adapter = getFullScreenAdapter(), self = this;
if (!adapter) {
return false;
}
if (!fullScreenBind) {
if (!this.fullScreenBind) {
util.addEvent(document, adapter.fullScreenChange.substring(2), function () {
if (!isFullScreen()) {
self.hooks.exitFullScreen();
@ -5337,7 +5342,7 @@ else
}
});
fullScreenBind = true;
this.fullScreenBind = true;
}
if (!isFullScreen()) {

View File

@ -251,50 +251,38 @@ $(document).ready(function () {
};
var editor = new Markdown.Editor(converter, '', options),
diffMatch = new diff_match_patch(), last = '', preview = $('#wmd-preview');
diffMatch = new diff_match_patch(), last = '', preview = $('#wmd-preview'),
boundary = '@boundary' + Math.ceil(Math.random() * 1000000) + '@';
// 自动跟随
converter.postConversion = function (html) {
var diffs = diffMatch.diff_main(html, last);
last = html;
converter.preConversion = function (text) {
var diffs = diffMatch.diff_main(last, text);
last = text;
if (diffs.length > 0) {
html = '';
var added = false;
text = '';
for (var i = 0; i < diffs.length; i ++) {
var diff = diffs[i];
if (added) {
var ep = diff[1].indexOf('>');
diff[1] = diff[1].substring(0, ep + 1)
+ '<span class="diff" />' + diff[1].substring(ep + 1);
if (diff[0] >= 0) {
text += diff[1];
}
added = false;
if (diff[0] != 0) {
var sp = diff[1].lastIndexOf('<'), ep = diff[1].lastIndexOf('>');
if (sp >= 0 && sp > ep) {
if (diff[1] < 0) {
diff[1] = diff[1].substring(0, sp) + '<span class="diff" />' + diff[1].substring(sp);
} else {
added = true;
}
} else {
diff[1] += '<span class="diff" />';
}
}
if (diff[0] <= 0) {
html += diff[1];
text += '\n' + boundary;
}
}
}
return html;
};
return text;
}
converter.postConversion = function (html) {
html = html.replace(boundary, '<span class="diff" />');
return html.replace(new RegExp(boundary, 'g'), '');
}
editor.hooks.chain('onPreviewRefresh', function () {
var diff = $('.diff', preview);