diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c3537620..e4be18372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/builds/appchan-x.js b/builds/appchan-x.js index 30cdbfe27..1d851a084 100644 --- a/builds/appchan-x.js +++ b/builds/appchan-x.js @@ -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; diff --git a/builds/appchan-x.user.js b/builds/appchan-x.user.js index e148cc17b..1b6b8eab9 100644 --- a/builds/appchan-x.user.js +++ b/builds/appchan-x.user.js @@ -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; diff --git a/builds/crx/script.js b/builds/crx/script.js index c07798890..2cf558729 100644 --- a/builds/crx/script.js +++ b/builds/crx/script.js @@ -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; diff --git a/src/General/css/burichan.css b/src/General/css/burichan.css deleted file mode 100644 index 6476a5539..000000000 --- a/src/General/css/burichan.css +++ /dev/null @@ -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,"); -} diff --git a/src/General/css/futaba.css b/src/General/css/futaba.css deleted file mode 100644 index 9b56af61a..000000000 --- a/src/General/css/futaba.css +++ /dev/null @@ -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,"); -} diff --git a/src/General/css/photon.css b/src/General/css/photon.css deleted file mode 100644 index 7f2370192..000000000 --- a/src/General/css/photon.css +++ /dev/null @@ -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,"); -} diff --git a/src/General/css/yotsuba-b.css b/src/General/css/yotsuba-b.css deleted file mode 100644 index d3bdd0234..000000000 --- a/src/General/css/yotsuba-b.css +++ /dev/null @@ -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,"); -} diff --git a/src/General/css/yotsuba.css b/src/General/css/yotsuba.css deleted file mode 100644 index a06ab02fb..000000000 --- a/src/General/css/yotsuba.css +++ /dev/null @@ -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,"); -} diff --git a/src/General/lib/polyfill.coffee b/src/General/lib/polyfill.coffee index 64224bfc6..5d9ddc124 100644 --- a/src/General/lib/polyfill.coffee +++ b/src/General/lib/polyfill.coffee @@ -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' diff --git a/src/Miscellaneous/Keybinds.coffee b/src/Miscellaneous/Keybinds.coffee index f7045e8cf..ba5f6eff6 100644 --- a/src/Miscellaneous/Keybinds.coffee +++ b/src/Miscellaneous/Keybinds.coffee @@ -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' \ No newline at end of file + $.addClass post, 'highlight'