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'