mirror of
https://github.com/vichan-devel/vichan.git
synced 2024-11-23 23:20:57 +01:00
js/quote-selection.js: Slightly less buggy, especially on Macs
This commit is contained in:
parent
67cbc2b1aa
commit
e8b693b044
@ -1,6 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* quote-selection.js
|
* quote-selection.js
|
||||||
*
|
*
|
||||||
|
* This is a little buggy.
|
||||||
|
* Allows you to quote a post by just selecting some text, then beginning to type.
|
||||||
|
*
|
||||||
* Released under the MIT license
|
* Released under the MIT license
|
||||||
* Copyright (c) 2012 Michael Save <savetheinternet@tinyboard.org>
|
* Copyright (c) 2012 Michael Save <savetheinternet@tinyboard.org>
|
||||||
*
|
*
|
||||||
@ -31,12 +34,15 @@ $(document).ready(function(){
|
|||||||
|
|
||||||
var altKey = false;
|
var altKey = false;
|
||||||
var ctrlKey = false;
|
var ctrlKey = false;
|
||||||
|
var metaKey = false;
|
||||||
|
|
||||||
$(document).keyup(function(e) {
|
$(document).keyup(function(e) {
|
||||||
if (e.altKey)
|
if (e.keyCode == 18)
|
||||||
altKey = false;
|
altKey = false;
|
||||||
else if (e.ctrlKey)
|
else if (e.keyCode == 17)
|
||||||
ctrlKey = false;
|
ctrlKey = false;
|
||||||
|
else if (e.keyCode == 91)
|
||||||
|
metaKey = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).keydown(function(e) {
|
$(document).keydown(function(e) {
|
||||||
@ -44,9 +50,11 @@ $(document).ready(function(){
|
|||||||
altKey = true;
|
altKey = true;
|
||||||
else if (e.ctrlKey)
|
else if (e.ctrlKey)
|
||||||
ctrlKey = true;
|
ctrlKey = true;
|
||||||
|
else if (e.metaKey)
|
||||||
|
metaKey = true;
|
||||||
|
|
||||||
if (altKey || ctrlKey) {
|
if (altKey || ctrlKey || metaKey) {
|
||||||
console.log('CTRL/ALT used. Ignoring');
|
// console.log('CTRL/ALT/Something used. Ignoring');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,20 +64,20 @@ $(document).ready(function(){
|
|||||||
var selection = window.getSelection();
|
var selection = window.getSelection();
|
||||||
var $post = $(selection.anchorNode).parents('.post');
|
var $post = $(selection.anchorNode).parents('.post');
|
||||||
if ($post.length == 0) {
|
if ($post.length == 0) {
|
||||||
console.log('Start of selection was not post div', $(selection.anchorNode).parent());
|
// console.log('Start of selection was not post div', $(selection.anchorNode).parent());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var postID = $post.find('.post_no:eq(1)').text();
|
var postID = $post.find('.post_no:eq(1)').text();
|
||||||
|
|
||||||
if (postID != $(selection.focusNode).parents('.post').find('.post_no:eq(1)').text()) {
|
if (postID != $(selection.focusNode).parents('.post').find('.post_no:eq(1)').text()) {
|
||||||
console.log('Selection left post div', $(selection.focusNode).parent());
|
// console.log('Selection left post div', $(selection.focusNode).parent());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
;
|
;
|
||||||
var selectedText = selection.toString();
|
var selectedText = selection.toString();
|
||||||
console.log('Selected text: ' + selectedText.replace(/\n/g, '\\n').replace(/\r/g, '\\r'));
|
// console.log('Selected text: ' + selectedText.replace(/\n/g, '\\n').replace(/\r/g, '\\r'));
|
||||||
|
|
||||||
if ($('body').hasClass('debug'))
|
if ($('body').hasClass('debug'))
|
||||||
alert(selectedText);
|
alert(selectedText);
|
||||||
@ -86,7 +94,7 @@ $(document).ready(function(){
|
|||||||
/* to solve some bugs on weird browsers, we need to replace \r\n with \n and then undo that after */
|
/* to solve some bugs on weird browsers, we need to replace \r\n with \n and then undo that after */
|
||||||
var quote = (last_quote != postID ? '>>' + postID + '\r\n' : '') + $.trim(selectedText).replace(/\r\n/g, '\n').replace(/^/mg, '>').replace(/\n/g, '\r\n') + '\r\n';
|
var quote = (last_quote != postID ? '>>' + postID + '\r\n' : '') + $.trim(selectedText).replace(/\r\n/g, '\n').replace(/^/mg, '>').replace(/\n/g, '\r\n') + '\r\n';
|
||||||
|
|
||||||
console.log('Deselecting text');
|
// console.log('Deselecting text');
|
||||||
selection.removeAllRanges();
|
selection.removeAllRanges();
|
||||||
|
|
||||||
if (document.selection) {
|
if (document.selection) {
|
||||||
|
Loading…
Reference in New Issue
Block a user