Merge branch 'v3'

Conflicts:
	CHANGELOG.md
	LICENSE
	builds/4chan-X.js
	builds/4chan-X.meta.js
	builds/appchan-x.user.js
	builds/crx/manifest.json
	builds/crx/script.js
	latest.js
	package.json
This commit is contained in:
Zixaphir 2013-05-28 05:57:21 -07:00
commit a86b1da74f
11 changed files with 79 additions and 347 deletions

View File

@ -1,3 +1,18 @@
<<<<<<< HEAD
=======
### v1.2.12
*2013-05-27*
**MayhemYDG**:
- Fix `Jump to Next Reply` keybind not accounting for posts after unread line
**seaweedchan**:
- Added `.hasInline` (if replyContainer contains .inline) for userstyle/script maintainers
### v1.2.11
*2013-05-27*
>>>>>>> v3
**MayhemYDG**:
- Tiny fixes
- Add page count to thread stats

View File

@ -3747,18 +3747,22 @@
return Polyfill.visibility();
},
visibility: function() {
var event, prefix, property;
if ('visibilityState' in document || !(prefix = ('webkitVisibilityState' in document ? 'webkit' : 'mozVisibilityState' in document ? 'moz' : void 0))) {
if (!('webkitHidden' in document)) {
return;
}
property = prefix + 'VisibilityState';
event = prefix + 'visibilitychange';
d.visibilityState = d[property];
d.hidden = d.visibilityState === 'hidden';
return $.on(d, event, function() {
d.visibilityState = d[property];
d.hidden = d.visibilityState === 'hidden';
Object.defineProperties(HTMLDocument.prototype, {
visibilityState: {
get: function() {
return this.webkitVisibilityState;
}
},
hidden: {
get: function() {
return this.webkitHidden;
}
}
});
return $.on(d, 'webkitvisibilitychange', function() {
return $.event('visibilitychange');
});
}
@ -12902,7 +12906,7 @@
}
},
hl: function(delta, thread) {
var headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
var axe, headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
if (Conf['Fixed Header'] && Conf['Bottom header']) {
topMargin = 0;
@ -12915,7 +12919,8 @@
rect = postEl.getBoundingClientRect();
if (rect.bottom >= topMargin && rect.top <= doc.clientHeight) {
root = postEl.parentNode;
next = $.x('child::div[contains(@class,"post reply")]', delta === +1 ? root.nextElementSibling : root.previousElementSibling);
axe = delta === +1 ? 'following' : 'preceding';
next = $.x("" + axe + "-sibling::div[contains(@class,'replyContainer')][1]/child::div[contains(@class,'reply')]", root);
if (!next) {
this.focus(postEl);
return;

View File

@ -3743,18 +3743,22 @@
return Polyfill.visibility();
},
visibility: function() {
var event, prefix, property;
if ('visibilityState' in document || !(prefix = ('webkitVisibilityState' in document ? 'webkit' : 'mozVisibilityState' in document ? 'moz' : void 0))) {
if (!('webkitHidden' in document)) {
return;
}
property = prefix + 'VisibilityState';
event = prefix + 'visibilitychange';
d.visibilityState = d[property];
d.hidden = d.visibilityState === 'hidden';
return $.on(d, event, function() {
d.visibilityState = d[property];
d.hidden = d.visibilityState === 'hidden';
Object.defineProperties(HTMLDocument.prototype, {
visibilityState: {
get: function() {
return this.webkitVisibilityState;
}
},
hidden: {
get: function() {
return this.webkitHidden;
}
}
});
return $.on(d, 'webkitvisibilitychange', function() {
return $.event('visibilitychange');
});
}
@ -12896,7 +12900,7 @@
}
},
hl: function(delta, thread) {
var headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
var axe, headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
if (Conf['Fixed Header'] && Conf['Bottom header']) {
topMargin = 0;
@ -12909,7 +12913,8 @@
rect = postEl.getBoundingClientRect();
if (rect.bottom >= topMargin && rect.top <= doc.clientHeight) {
root = postEl.parentNode;
next = $.x('child::div[contains(@class,"post reply")]', delta === +1 ? root.nextElementSibling : root.previousElementSibling);
axe = delta === +1 ? 'following' : 'preceding';
next = $.x("" + axe + "-sibling::div[contains(@class,'replyContainer')][1]/child::div[contains(@class,'reply')]", root);
if (!next) {
this.focus(postEl);
return;

View File

@ -3744,18 +3744,22 @@
return Polyfill.visibility();
},
visibility: function() {
var event, prefix, property;
if ('visibilityState' in document || !(prefix = ('webkitVisibilityState' in document ? 'webkit' : 'mozVisibilityState' in document ? 'moz' : void 0))) {
if (!('webkitHidden' in document)) {
return;
}
property = prefix + 'VisibilityState';
event = prefix + 'visibilitychange';
d.visibilityState = d[property];
d.hidden = d.visibilityState === 'hidden';
return $.on(d, event, function() {
d.visibilityState = d[property];
d.hidden = d.visibilityState === 'hidden';
Object.defineProperties(HTMLDocument.prototype, {
visibilityState: {
get: function() {
return this.webkitVisibilityState;
}
},
hidden: {
get: function() {
return this.webkitHidden;
}
}
});
return $.on(d, 'webkitvisibilitychange', function() {
return $.event('visibilitychange');
});
}
@ -12879,7 +12883,7 @@
}
},
hl: function(delta, thread) {
var headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
var axe, headRect, next, postEl, rect, replies, reply, root, topMargin, _i, _len;
if (Conf['Fixed Header'] && Conf['Bottom header']) {
topMargin = 0;
@ -12892,7 +12896,8 @@
rect = postEl.getBoundingClientRect();
if (rect.bottom >= topMargin && rect.top <= doc.clientHeight) {
root = postEl.parentNode;
next = $.x('child::div[contains(@class,"post reply")]', delta === +1 ? root.nextElementSibling : root.previousElementSibling);
axe = delta === +1 ? 'following' : 'preceding';
next = $.x("" + axe + "-sibling::div[contains(@class,'replyContainer')][1]/child::div[contains(@class,'reply')]", root);
if (!next) {
this.focus(postEl);
return;

View File

@ -1,58 +0,0 @@
/* General */
:root.burichan .dialog {
background-color: #D6DAF0;
border-color: #B7C5D9;
}
:root.burichan .field:focus {
border-color: #98E;
}
/* Header */
:root.burichan #header-bar, :root.burichan #header-bar #notifications {
font-size: 11pt;
color: #89A;
}
:root.burichan #header-bar a, :root.burichan #header-bar #notifications a {
color: #34345C;
}
/* Settings */
:root.burichan #fourchanx-settings fieldset {
border-color: #B7C5D9;
}
/* Quote */
:root.burichan .backlink.deadlink {
color: #34345C !important;
}
:root.burichan .inline {
border-color: #B7C5D9;
background-color: rgba(255, 255, 255, .14);
}
/* QR */
.burichan #dump-list::-webkit-scrollbar-thumb {
background-color: #D6DAF0;
border-color: #B7C5D9;
}
:root.burichan .qr-preview {
background-color: rgba(0, 0, 0, .15);
}
/* Menu */
:root.burichan #menu {
color: #000000;
}
:root.burichan .entry {
border-bottom: 1px solid #B7C5D9;
font-size: 12pt;
}
:root.burichan .focused.entry {
background: rgba(255, 255, 255, .33);
}
/* Watcher Favicon */
:root.burichan .watch-thread-link
{
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(0,0,0)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
}

View File

@ -1,58 +0,0 @@
/* General */
:root.futaba .dialog {
background-color: #F0E0D6;
border-color: #D9BFB7;
}
:root.futaba .field:focus {
border-color: #EA8;
}
/* Header */
:root.futaba #header-bar, :root.futaba #notifications {
font-size: 11pt;
color: #B86;
}
:root.futaba #header-bar a, :root.futaba #notifications a {
color: #800000;
}
/* Settings */
:root.futaba #fourchanx-settings fieldset {
border-color: #D9BFB7;
}
/* Quote */
:root.futaba .backlink.deadlink {
color: #00E !important;
}
:root.futaba .inline {
border-color: #D9BFB7;
background-color: rgba(255, 255, 255, .14);
}
/* QR */
.futaba #dump-list::-webkit-scrollbar-thumb {
background-color: #F0E0D6;
border-color: #D9BFB7;
}
:root.futaba .qr-preview {
background-color: rgba(0, 0, 0, .15);
}
/* Menu */
:root.futaba #menu {
color: #800000;
}
:root.futaba .entry {
border-bottom: 1px solid #D9BFB7;
font-size: 12pt;
}
:root.futaba .focused.entry {
background: rgba(255, 255, 255, .33);
}
/* Watcher Favicon */
:root.futaba .watch-thread-link
{
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(128,0,0)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
}

View File

@ -1,58 +0,0 @@
/* General */
:root.photon .dialog {
background-color: #DDD;
border-color: #CCC;
}
:root.photon .field:focus {
border-color: #EA8;
}
/* Header */
:root.photon #header-bar, :root.photon #notifications {
font-size: 9pt;
color: #333;
}
:root.photon #header-bar a, :root.photon #notifications a {
color: #FF6600;
}
/* Settings */
:root.photon #fourchanx-settings fieldset {
border-color: #CCC;
}
/* Quote */
:root.photon .backlink.deadlink {
color: #F60 !important;
}
:root.photon .inline {
border-color: #CCC;
background-color: rgba(255, 255, 255, .14);
}
/* QR */
.photon #dump-list::-webkit-scrollbar-thumb {
background-color: #DDD;
border-color: #CCC;
}
:root.photon .qr-preview {
background-color: rgba(0, 0, 0, .15);
}
/* Menu */
:root.photon #menu {
color: #333;
}
:root.photon .entry {
border-bottom: 1px solid #CCC;
font-size: 10pt;
}
:root.photon .focused.entry {
background: rgba(255, 255, 255, .33);
}
/* Watcher Favicon */
:root.photon .watch-thread-link
{
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(51,51,51)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
}

View File

@ -1,58 +0,0 @@
/* General */
:root.yotsuba-b .dialog {
background-color: #D6DAF0;
border-color: #B7C5D9;
}
:root.yotsuba-b .field:focus {
border-color: #98E;
}
/* Header */
:root.yotsuba-b #header-bar, :root.yotsuba-b #notifications {
font-size: 9pt;
color: #89A;
}
:root.yotsuba-b #header-bar a, :root.yotsuba-b #notifications a {
color: #34345C;
}
/* Settings */
:root.yotsuba-b #fourchanx-settings fieldset {
border-color: #B7C5D9;
}
/* Quote */
:root.yotsuba-b .backlink.deadlink {
color: #34345C !important;
}
:root.yotsuba-b .inline {
border-color: #B7C5D9;
background-color: rgba(255, 255, 255, .14);
}
/* QR */
.yotsuba-b #dump-list::-webkit-scrollbar-thumb {
background-color: #D6DAF0;
border-color: #B7C5D9;
}
:root.yotsuba-b .qr-preview {
background-color: rgba(0, 0, 0, .15);
}
/* Menu */
:root.yotsuba-b #menu {
color: #000;
}
:root.yotsuba-b .entry {
border-bottom: 1px solid #B7C5D9;
font-size: 10pt;
}
:root.yotsuba-b .focused.entry {
background: rgba(255, 255, 255, .33);
}
/* Watcher Favicon */
:root.yotsuba-b .watch-thread-link
{
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(0,0,0)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
}

View File

@ -1,58 +0,0 @@
/* General */
:root.yotsuba .dialog {
background-color: #F0E0D6;
border-color: #D9BFB7;
}
:root.yotsuba .field:focus {
border-color: #EA8;
}
/* Header */
:root.yotsuba #header-bar, :root.yotsuba #notifications {
font-size: 9pt;
color: #B86;
}
:root.yotsuba #header-bar a, :root.yotsuba #notifications a {
color: #800000;
}
/* Settings */
:root.yotsuba #fourchanx-settings fieldset {
border-color: #D9BFB7;
}
/* Quote */
:root.yotsuba .backlink.deadlink {
color: #00E !important;
}
:root.yotsuba .inline {
border-color: #D9BFB7;
background-color: rgba(255, 255, 255, .14);
}
/* QR */
.yotsuba #dump-list::-webkit-scrollbar-thumb {
background-color: #F0E0D6;
border-color: #D9BFB7;
}
:root.yotsuba .qr-preview {
background-color: rgba(0, 0, 0, .15);
}
/* Menu */
:root.yotsuba #menu {
color: #800000;
}
:root.yotsuba .entry {
border-bottom: 1px solid #D9BFB7;
font-size: 10pt;
}
:root.yotsuba .focused.entry {
background: rgba(255, 255, 255, .33);
}
/* Watcher Favicon */
:root.yotsuba .watch-thread-link
{
background-image: url("data:image/svg+xml,<svg viewBox='0 0 26 26' preserveAspectRatio='true' xmlns='http://www.w3.org/2000/svg'><path fill='rgb(128,0,0)' d='M24.132,7.971c-2.203-2.205-5.916-2.098-8.25,0.235L15.5,8.588l-0.382-0.382c-2.334-2.333-6.047-2.44-8.25-0.235c-2.204,2.203-2.098,5.916,0.235,8.249l8.396,8.396l8.396-8.396C26.229,13.887,26.336,10.174,24.132,7.971z'/></svg>");
}

View File

@ -3,21 +3,10 @@ Polyfill =
Polyfill.visibility()
visibility: ->
# page visibility API
return if 'visibilityState' of document or not (
prefix = (
if 'webkitVisibilityState' of document
'webkit'
else if 'mozVisibilityState' of document
'moz'
)
)
property = prefix + 'VisibilityState'
event = prefix + 'visibilitychange'
d.visibilityState = d[property]
d.hidden = d.visibilityState is 'hidden'
$.on d, event, ->
d.visibilityState = d[property]
d.hidden = d.visibilityState is 'hidden'
$.event 'visibilitychange'
return unless 'webkitHidden' of document
Object.defineProperties HTMLDocument.prototype,
visibilityState:
get: -> @webkitVisibilityState
hidden:
get: -> @webkitHidden
$.on d, 'webkitvisibilitychange', -> $.event 'visibilitychange'

View File

@ -203,8 +203,11 @@ Keybinds =
rect = postEl.getBoundingClientRect()
if rect.bottom >= topMargin and rect.top <= doc.clientHeight # We're at least partially visible
root = postEl.parentNode
next = $.x 'child::div[contains(@class,"post reply")]',
if delta is +1 then root.nextElementSibling else root.previousElementSibling
axe = if delta is +1
'following'
else
'preceding'
next = $.x "#{axe}-sibling::div[contains(@class,'replyContainer')][1]/child::div[contains(@class,'reply')]", root
unless next
@focus postEl
return
@ -227,4 +230,4 @@ Keybinds =
return
focus: (post) ->
$.addClass post, 'highlight'
$.addClass post, 'highlight'