mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-18 15:08:22 +00:00
* textcolor: fixed plugin bugs, added translation for zh * image: fixed default.jpg src bug * added 'ru' support for seaf edit * rm aloha-0.22.3 and ununsed files in aloha-0.22.7
177 lines
4.9 KiB
JavaScript
Executable File
177 lines
4.9 KiB
JavaScript
Executable File
/* position.js is part of Aloha Editor project http://aloha-editor.org
|
|
*
|
|
* Aloha Editor is a WYSIWYG HTML5 inline editing library and editor.
|
|
* Copyright (c) 2010-2012 Gentics Software GmbH, Vienna, Austria.
|
|
* Contributors http://aloha-editor.org/contribution.php
|
|
*
|
|
* Aloha Editor is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or any later version.
|
|
*
|
|
* Aloha Editor is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* As an additional permission to the GNU GPL version 2, you may distribute
|
|
* non-source (e.g., minimized or compacted) forms of the Aloha-Editor
|
|
* source code without the copy of the GNU GPL normally required,
|
|
* provided you include this license notice and a URL through which
|
|
* recipients can access the Corresponding Source.
|
|
*/
|
|
// Start Closure
|
|
// Ensure GENTICS Namespace
|
|
window.GENTICS = window.GENTICS || {};
|
|
window.GENTICS.Utils = window.GENTICS.Utils || {};
|
|
define(['jquery'], function (jQuery) {
|
|
"use strict";
|
|
|
|
var $ = jQuery,
|
|
GENTICS = window.GENTICS,
|
|
Class = window.Class,
|
|
console = window.console;
|
|
|
|
/**
|
|
* position utility, which will provide scroll and mouse positions
|
|
* please note that the positions provided by this class are not
|
|
* realtime - instead they are calculated with a 0.5 second delay
|
|
*/
|
|
GENTICS.Utils.Position = {};
|
|
|
|
/**
|
|
* jquery reference to the window object
|
|
*/
|
|
GENTICS.Utils.Position.w = jQuery(window);
|
|
|
|
/**
|
|
* contains the current scroll top and left position, and indicates if the user is currently scrolling
|
|
* @api
|
|
*/
|
|
GENTICS.Utils.Position.Scroll = {
|
|
top: 0,
|
|
left: 0,
|
|
isScrolling: false
|
|
};
|
|
|
|
/**
|
|
* contains the scroll corrections to apply on special cases (ribbon for example)
|
|
* @api
|
|
*/
|
|
GENTICS.Utils.Position.ScrollCorrection = {
|
|
top: 100,
|
|
left: 50
|
|
};
|
|
|
|
/**
|
|
* contains the current mouse position (x,y) as well as an indicator if the mouse is moving
|
|
* @api
|
|
*/
|
|
GENTICS.Utils.Position.Mouse = {
|
|
x: 0,
|
|
y: 0,
|
|
oldX: 0,
|
|
oldY: 0,
|
|
isMoving: false,
|
|
triggeredMouseStop: true
|
|
};
|
|
|
|
/**
|
|
* contains all mousestop callbacks
|
|
*/
|
|
GENTICS.Utils.Position.mouseStopCallbacks = [];
|
|
|
|
/**
|
|
* contains all mousemove callbacks
|
|
*/
|
|
GENTICS.Utils.Position.mouseMoveCallbacks = [];
|
|
|
|
/**
|
|
* updates scroll position and the scrolling status
|
|
*/
|
|
GENTICS.Utils.Position.update = function () {
|
|
// update scroll position
|
|
var st = this.w.scrollTop(),
|
|
sl = this.w.scrollLeft(),
|
|
i;
|
|
|
|
if (this.Scroll.isScrolling) {
|
|
if (this.Scroll.top == st && this.Scroll.left == sl) {
|
|
// stopped scrolling
|
|
this.Scroll.isScrolling = false;
|
|
}
|
|
} else {
|
|
if (this.Scroll.top != st || this.Scroll.left != sl) {
|
|
// started scrolling
|
|
this.Scroll.isScrolling = true;
|
|
}
|
|
}
|
|
|
|
// update scroll positions
|
|
this.Scroll.top = st;
|
|
this.Scroll.left = sl;
|
|
|
|
// check wether the user has stopped moving the mouse
|
|
if (this.Mouse.x == this.Mouse.oldX && this.Mouse.y == this.Mouse.oldY) {
|
|
this.Mouse.isMoving = false;
|
|
// now check if we've triggered the mousestop event
|
|
if (!this.Mouse.triggeredMouseStop) {
|
|
this.Mouse.triggeredMouseStop = true;
|
|
// iterate callbacks
|
|
for (i = 0; i < this.mouseStopCallbacks.length; i++) {
|
|
this.mouseStopCallbacks[i].call();
|
|
}
|
|
}
|
|
} else {
|
|
this.Mouse.isMoving = true;
|
|
this.Mouse.triggeredMouseStop = false;
|
|
// iterate callbacks
|
|
for (i = 0; i < this.mouseMoveCallbacks.length; i++) {
|
|
this.mouseMoveCallbacks[i].call();
|
|
}
|
|
}
|
|
|
|
// update mouse positions
|
|
this.Mouse.oldX = this.Mouse.x;
|
|
this.Mouse.oldY = this.Mouse.y;
|
|
};
|
|
|
|
/**
|
|
* adds a callback method which is invoked when the mouse has stopped moving
|
|
* @param callback the callback method to be invoked
|
|
* @return index of the callback
|
|
*/
|
|
GENTICS.Utils.Position.addMouseStopCallback = function (callback) {
|
|
this.mouseStopCallbacks.push(callback);
|
|
return (this.mouseStopCallbacks.length - 1);
|
|
};
|
|
|
|
/**
|
|
* adds a callback method which is invoked when the mouse is moving
|
|
* @param callback the callback method to be invoked
|
|
* @return index of the callback
|
|
*/
|
|
GENTICS.Utils.Position.addMouseMoveCallback = function (callback) {
|
|
this.mouseMoveCallbacks.push(callback);
|
|
return (this.mouseMoveCallbacks.length - 1);
|
|
};
|
|
|
|
|
|
// Mousemove Hooks
|
|
jQuery(function () {
|
|
window.setInterval(function () {
|
|
GENTICS.Utils.Position.update();
|
|
}, 500);
|
|
});
|
|
|
|
jQuery('html').mousemove(function (e) {
|
|
GENTICS.Utils.Position.Mouse.x = e.pageX;
|
|
GENTICS.Utils.Position.Mouse.y = e.pageY;
|
|
});
|
|
|
|
});
|