提案 #1563
完了設定ウインドウのスクロールバーを常に表示するようにする
説明
提案 #1560: タイムラインのスクロールバーを常に表示するようにする と同様で
設定ウインドウのスクロールバーも
「スクロール中 もしくは スクロールバー上にマウスカーソルがあるときだけ表示」
というデフォルト設定なので常時表示に修正すべき?
設定画面の左側メニューと右側設定画面とそれぞれありますが、
両方とも(スクロールが必要な高さのときは)常時表示とすべきですかね。
ファイル
関連するチケット
Izumi Tsutsui さんがほぼ3年前に更新
- ファイル 0001-no-overlay-settings.patch 0001-no-overlay-settings.patch を追加
- ステータス を 分類待ち から パッチ適用待ち に変更
ウィジェットのプロパティを設定するのに
メソッドチェーンを使うのか
個別にプロパティを代入するのか
というのはなにか指針あるんですかね。
今回のパッチは source:plugin/gtk3/widget/timeline.rb に合わせて後者に直してますが。
個人的には
画面設計としていろいろ設定するなら個別設定
一部だけをデフォルトから変える(=基本はデフォルト)ならメソッドチェーン
という雰囲気は感じますが、やたらと長いチェーンもあるのでどうなのかなと。
toshi_a 初音 さんがほぼ3年前に更新
- 一般的には
Rubyらしさという観点では、value=
ですね。
Ruby Style Guideでもそう定義されています。 https://rubystyle.guide/#accessor_mutator_method_names
ゲッターの get_value
は多くのルールで禁止されていて、 value
とすべきです。一方、 set_value
はメソッドチェーン的に書けたほうが嬉しいこともあるからか、禁止しないルールも見覚えがあります。
- mikutterでは
mikutterのコーディング規約は source:.rubocop.yml にあり、rubocopで検出できるコーディング規約違反が新規に含まないようにしていますが、今確認したら Naming/AccessorMethodName
が無効になってますね。これは理由を調査したほうが良さそう(先のset_を許容するためか?)。
ただし、以上はメソッド定義に関するルールで、呼び出しに関するルールではない認識です。同様に適用して良いと思います。
漏れがありそうですが↓を2つとも満たせば set_
を使っても良い、かも
- メソッドチェーンを使えばウィジェットを変数に代入することを避けられる場合
- 代入するプロパティが1-2個など、少ない場合
Izumi Tsutsui さんがほぼ3年前に更新
toshi_a 初音 さんは #note-3 で書きました:
漏れがありそうですが↓を2つとも満たせば
set_
を使っても良い、かも
- メソッドチェーンを使えばウィジェットを変数に代入することを避けられる場合
- 代入するプロパティが1-2個など、少ない場合
解説ありがとうございます。だいたい自分がコードを読んだ感覚的にはそんな感じかなというところです。
実装して書いている側の立場だと、メソッドチェーンでまとめて書いたほうが全体脳内設計を吐き出しやすい一方で、
ドキュメント無しでコードから設計を読み解く(あるいはコード≒設計書になるようにしてサボる)立場から見ると
個別要素が1行ずつ書いてあったほうが把握しやすい、ということかなあ、
みたいな印象です。
添付のパッチ 0001-no-overlay-settings.patch についてはset_policy
で hscroll_policy
と vscroll_policy
の2つを代入する、
というのが微妙ですが、GTK側の設計としてオブジェクト指向的定義に失敗している、という感じですかね。
toshi_a 初音 さんがほぼ3年前に更新
- ステータス を パッチ適用待ち から レビュー待ち に変更
- 担当者 を Izumi Tsutsui にセット
- ブランチ を topic/1563-no-overlay-settings にセット
toshi_a 初音 さんがほぼ3年前に更新
TLは今までも常時表示するように意図的に指定していたので酸性だったのですが、設定にもやりだすと、あらゆるところに設定して回る必要があるのできりがないんですが、Gtk2のときも環境変数で指定していて全てのスクロールバーが表示されていたのと、スクロールバー出ているほうが嬉しいと思ってしまうので、TLと設定くらいはスクロールバー出しておきましょうか。
Izumi Tsutsui さんがほぼ3年前に更新
- ステータス を レビュー待ち から マージ待ち に変更
git merge topic/1563-no-overlay-settings して OKです。
「スクロールバーを常時出す」のは scroll_policy の :always と :automatic の差、
「スクロールバー分の幅を確保せずにマウスカーソルに応じてオーバーレイする」が overlay_scrolling = false の設定
という微妙な用語定義がありますが、後者をどうするかですよね。
mikutterはウィジェット右端いっぱいまで文字表示するケースが多くて「スクロールバーで隠れて読めない」が気になりがち。
そもそも mastodon_custom_post みたいに「縦長だけどスクロールバー設定がない(=画面が狭いと困る?)」
というのもあるので、発生対応でよい(=タイムラインと設定までで様子見)のではないかと思います。
今ぱっと思いつくのは activity くらいですが。
Izumi Tsutsui さんがほぼ3年前に更新
toshi_a 初音 さんは #note-6 で書きました:
Gtk2のときも環境変数で指定していて全てのスクロールバーが表示されていたのと、
Gtk::Settings.default.gtk_overlay_scrolling = false
を指定すると全部のウインドウに適用されて全部スクロールバーオーバーレイ無効になるっぽいです。
これをどこに書くべきなのかがピンときませんが、plugin/gtk3/gtk3.rb の最初に書いておけば一応効いてるっぽいです。
Izumi Tsutsui さんがほぼ3年前に更新
toshi_a 初音 さんは #note-9 で書きました:
このままmergeして、他に同様の起票があった時に考えます。
了解です。
たちまち気づくのは UserList くらいですね(フォロー・フォロワー・ふぁぼられ・RT一覧)
Izumi Tsutsui さんがほぼ3年前に更新
メモ書きですが
Gtk2のときも環境変数で指定していて
いまさらですが
mikutter.rb のENV['LIBOVERLAY_SCROLLBAR'] = '0'
のことだとすると、GTK3 的にはこれをENV['GTK_OVERLAY_SCROLLING'] = '0'
にするだけですね……。
mikutter.rb で設定するのが妥当なのか、という観点はありますが。