« でかっ | トップページ | Thunderbird 115で、userChrome.js »

2023年7月17日 (月)

Thunderbird 115 とりあえず

今日も晴れで、空気重め。

 

Thunderbird 115 とりあえず、自作のuserChrome.jsのプログラムに関して、目途がついた。

いくつか関数がなくなっていて、それを探しまくって、やっと見つけた。(苦笑)

下記に、結論だけを書いて、説明は後述。
興味のある人は、そちらもどうぞ。

「gFolderTreeView」がなくなったそうで、もちろん、それに付属するものも。

自作のタブをクリックすると、そのフォルダを表示する関数。

旧:gFolderTreeView.selectFolder(folder, true);
   ↓
MailUtils.displayFolderIn3Pane(folder);

メッセージの移動関数もなくなったようだ。

タブにメールをドラッグ&ドロップすると、そのフォルダにメールを移動する関数。

旧:MsgMoveMessage(folder);
   ↓
var tspan = 500;
setTimeout(function(){
    goDoCommand('cmd_moveMessage', folder);
}, tspan);

説明は後述。

これが一番厄介だった。

コンテキストメニューのid「mailContext」は存在しているのだけれど、どうやっても拾ってくれなかった。

var browser_element = document.getElementById("mail3PaneTabBrowser1");
var child_document = browser_element.contentDocument;
var cm = child_document.getElementById("mailContext");

これについても後述。

 

ここから、補足説明。

旧:gFolderTreeView.selectFolder(folder, true);
   ↓
MailUtils.displayFolderIn3Pane(folder);

よく使うフォルダをタブにして、それをクリックすれば、それを開き、そこにメールをドラッグ&ドロップすれば、メールを移動させる、というのを、QuickFoldersというアドオンをヒントに作った。

このアドオン、115にも対応予定のようで、それについて書かれている。

Make QuickFolders compatible with Thunderbird 115 (ESR 2023/24) · Issue #351 · RealRaven2000/QuickFolders · GitHub

ここを読むと、フォルダの表示は、「displayFolder(folderUri)」を使うと書いている。

が、Thunderbird 115のスクリプトの中を検索して、確かにあるのを確認して、試してみたけれど、動かなかった。

他にないか?と思って、探しまくった結果、上記を見つけ、動作は問題ないことを確認した。

「select」から「display」に変わっているから、余計にわかりづらい!

 

次に、メールの移動。

旧:MsgMoveMessage(folder);
   ↓
var tspan = 500;
setTimeout(function(){
    goDoCommand('cmd_moveMessage', folder);
}, tspan);

これに関しては、全く情報がなく、Thunderbird 115のスクリプトの中を、あれやこれやと検索条件を変え、やっと探し当てたもの。

「goDoCommand('cmd_moveMessage', folder);」だけだと、動いてくれなかったので、遅延させたら、メッセージの移動が出来た。

他にも関数があるかもしれないし、遅延処理をしないでも出来るのかもしれないけれど、とりあえずこれで。

なくなった関数があるなら、それを教えてほしいし、代替の関数を提示してほしいよね!

 

これが一番厄介だった!

var browser_element = document.getElementById("mail3PaneTabBrowser1");
var child_document = browser_element.contentDocument;
var cm = child_document.getElementById("mailContext");

コンテキストメニューのid「mailContext」を取得しようと思っても出来ない。

querySelectorを使ってもダメ。

親を指定してもダメ。

困りに困って、Bing Search(Bing AIチャット)を頼ることに。

同じようなやり方しか返ってこなかったけれど、ボヤキのような感じで、これって、HTMLの中にHTMLがあるんだよね、なんて書くと、iframeの事例を出してくれた。

それを見て、もしかして?と思ってやってみたら、拾ってくれるようになった!

構造は、こういう感じになっている。

browserのid「mail3PaneTabBrowser1」の中に、HTMLが存在し、その中に、id「mailContext」が存在している。
確かに、iframeと同じような構成。

普通に検索しただけでは、隠蔽されているというか、この中まで検索してくれないので、「mail3PaneTabBrowser1」の子要素を全て取得し、その中で、また探すというもの。

これが出来た時は、Bing Search様様!だったよ。
思わず、お礼を書いたくらいだし。(笑)

もし、このことを教えてくれなかったら、自力でのネット検索では見つけられなかったと思う。

AIの活用って、本当にすごいことだわ。

これで、なんとかなったのだけれど、コンテキストメニューを見てみると、

空白になっている!

一応、動作上問題ないところは、クリックすれば、その動作をしてくれるけれど、名前であるLabelが全く見えない...

なんで?と思って、その部分を見てみると、

Thunderbird 115が設定したものと、自分が追加したものとでは、menuitemの作成のされ方が違っている。

前者は、idの下に、必要な子要素がある。
しかし、自分が追加したものには、そういうものがない。

これがないから、名称が表示されていないんだと思う。

ちなみに、Firefoxの方では、同じように、自動で子要素が作られている。

バグなのか、ただ対応していないだけなのかはわからない。

なんとか、「mailContext」を見つけることは出来たけれど、このように、名称が表示出来ないので、行き詰まり状態。

Labelの表示は出来ないけれど、代替案として、「tooltiptext」で表示させる、というのを考えた。

が、色々と調べていて分かった。

ここに、何らかの実行コマンドを埋め込んでも、上位の階層で動くものは動かせないというのがわかった。
上記でidを取得する、というのとは逆バージョン。

色々と工夫すれば出来ないことはないんだろうけれど、かなり面倒くさそうなので、諦めるしかないかな。

でも、何で動かないのか原因がわかっただけよしとしよう。

それに、絶対に必要なものではないから、ここまででいいか、つまり、使わなくてもいいか、と思っているところ。

他にも、動かなかった自作のuserChrome.jsのプログラムを動かせるように出来、これで、いつでも115にバージョンアップしてもいい状態になった。

 

そうそう、外観について。

タイトルバーに、Thunderbird 115に関するボタンが一杯くっ付いていたけれど、実際はそうではなかった。

設定の中の「システムウィンドウのタイトルバーを隠す」のチェックを外すと、ちゃんと、Windows用のタイトルバーが出た。

別物だったのである。

上記はタイトルバーが表示されている状態。

そして、気持ち悪かった、ボタン群を、以前同様、タブの下にも移動出来た。

結構、あっけなかった。

「userChrome.css」に、

#titlebar .icons-beside-text {
    order: 10 !important;
}

を追加。

数字は、大きければ何でもいいでしょう。

と、ようやく、それなりの形に整ったのである。

ちなみに、そのボタン群の下に、自作のタブがあり、タブをクリックすると、そのフォルダを表示し、メールをドラッグ&ドロップすると、メールを移動出来るようになっている。

凝ったことはしていないので、先述のQuickFoldersの簡易版のようなもの。

とにもかくにも、インターフェースをいじられると、結構大変だね。(苦笑)

あまり需要のなさそうな情報だけれど、それでも、誰かのために、ここに残しておこうと思う。

あ、新しいアイコン、小さめで、わかりにくいなぁ。

|

« でかっ | トップページ | Thunderbird 115で、userChrome.js »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« でかっ | トップページ | Thunderbird 115で、userChrome.js »