はてなブックマーク拡張のコメント表示機能を修正してみた

キャプチャ画像

パッチ

diff --git a/chrome/content/browser/15-CommentViewer.js b/chrome/content/browser/15-CommentViewer.js
index 9edd1d1..875b246 100644
--- a/chrome/content/browser/15-CommentViewer.js
+++ b/chrome/content/browser/15-CommentViewer.js
@@ -15,7 +15,7 @@ elementGetter(this, 'commentFooter', 'hBookmark-comment-footer', document);
 elementGetter(this, 'listContainer', 'hBookmark-comment-list-container', document);
 elementGetter(this, 'list', 'hBookmark-comment-list', document);
 elementGetter(this, 'listDiv', 'hBookmark-comment-div', document);
-elementGetter(this, 'addonbar', 'addon-bar', document);
+elementGetter(this, 'bottombox', 'browser-bottombox', document);

 elementGetter(this, 'faviconImage', 'hBookmark-comment-favicon', document);
 elementGetter(this, 'titleLabel', 'hBookmark-comment-title', document);
@@ -141,7 +141,7 @@ var CommentViewer = {
         data.publicCount = data.bookmarks.length;
         data.privateCount = data.count - data.publicCount;
         panelComment.setAttribute('hTransparent', true);
-        panelComment.openPopup(addonbar, 'before_end', -20, 0, false, false);
+        panelComment.openPopup(bottombox, 'before_end', -20, 0, false, false);
         CommentViewer.updateViewer(data);
         commentButton.setAttribute('loading', 'false');
     },

追記

キャプチャ画像

とりあえずのコミットをしてみた。
Australisでこの手のアイテムは上層部になってしまうので、コメント表示のパネルは吹き出し付きの<panel type="arrow" ...>にした方が良いかもなあ。

追記(2014-05-25)

キャプチャ画像 キャプチャ画像

少々トリッキーだが、なんとかAustralisのパネルに対応した。アイテムがパネル内にある場合とツールバーにある場合とで挙動を分けるのに苦労した。

元ステータスバーのアイテムは3つのUIが固まっている。

  • ブックマーク追加・編集ボタン
  • ブックマーク数、兼、はてなブックマークページへジャンプするボタン
  • コメント表示ボタン

UIが2つだったら、Firefoxのブックマークボタンと似た作りにすれば良かったが、3つの場合は無理だった。
仕方なく以下の様なことをした。

  • 更に1つ、パネルボタン用UIを追加
  • パネル内にある場合は他の3つを非表示、ツールバーにある場合はボタンを非表示するスタイルを追加
  • パネルボタン用UIがクリックされたら自力でパネルのメニューを表示するコードを追加
バグ
元からでは無い気がするが、コメント表示のポップアップがクリック一回目は一瞬で閉じてしまう。もう一度クリックすると表示できるのだが…。 パッと見で修正できそうになかったので、とりあえず放置。誰か治して−。

直した: コメントビューのバグ修正 · be3df8c · teramako/hatena-bookmark-xul

追記(2014-05-26)

キャプチャ画像

どこに表示すべきか迷ったが、結局パネルのヘッダー部分にブックマーク数を表示することにした。

よくあることだが、id 指定で1つしか無いことを前提に書かれているのを複数対応できるようにするのはなかなかに苦労する。

ついでに、データ同期のところで失敗しているっぽかったので、修正した。