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