プロジェクト

全般

プロフィール

提案 #1563

完了

設定ウインドウのスクロールバーを常に表示するようにする

Izumi Tsutsui さんがほぼ3年前に追加. ほぼ3年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
settings_gtk

説明

提案 #1560: タイムラインのスクロールバーを常に表示するようにする と同様で
設定ウインドウのスクロールバーも
「スクロール中 もしくは スクロールバー上にマウスカーソルがあるときだけ表示」
というデフォルト設定なので常時表示に修正すべき?

設定画面の左側メニューと右側設定画面とそれぞれありますが、
両方とも(スクロールが必要な高さのときは)常時表示とすべきですかね。


ファイル

0001-no-overlay-settings.patch (1.57 KB) 0001-no-overlay-settings.patch Izumi Tsutsui, 2021-12-26 04:40

関連するチケット

関連している 提案 #1560: タイムラインのスクロールバーを常に表示するようにする終了操作

Izumi Tsutsui さんがほぼ3年前に更新

ウィジェットのプロパティを設定するのに
メソッドチェーンを使うのか
個別にプロパティを代入するのか
というのはなにか指針あるんですかね。
今回のパッチは source:plugin/gtk3/widget/timeline.rb に合わせて後者に直してますが。

個人的には
画面設計としていろいろ設定するなら個別設定
一部だけをデフォルトから変える(=基本はデフォルト)ならメソッドチェーン
という雰囲気は感じますが、やたらと長いチェーンもあるのでどうなのかなと。

Izumi Tsutsui さんがほぼ3年前に更新

  • 関連している 提案 #1560: タイムラインのスクロールバーを常に表示するようにする を追加

toshi_a 初音 さんがほぼ3年前に更新

  1. 一般的には

Rubyらしさという観点では、value= ですね。

Ruby Style Guideでもそう定義されています。 https://rubystyle.guide/#accessor_mutator_method_names

ゲッターの get_value は多くのルールで禁止されていて、 value とすべきです。一方、 set_value はメソッドチェーン的に書けたほうが嬉しいこともあるからか、禁止しないルールも見覚えがあります。

  1. 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_policyhscroll_policyvscroll_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 の最初に書いておけば一応効いてるっぽいです。

toshi_a 初音 さんがほぼ3年前に更新

このままmergeして、他に同様の起票があった時に考えます。

toshi_a 初音 さんがほぼ3年前に更新

  • ステータスマージ待ち から 終了 に変更

merged.

Izumi Tsutsui さんがほぼ3年前に更新

toshi_a 初音 さんは #note-9 で書きました:

このままmergeして、他に同様の起票があった時に考えます。

了解です。
たちまち気づくのは UserList くらいですね(フォロー・フォロワー・ふぁぼられ・RT一覧)

toshi_a 初音 さんがほぼ3年前に更新

同様の提案が入ったら修正方針として #note-8 を検討したいということです。俺は気になってないです。

Izumi Tsutsui さんがほぼ3年前に更新

メモ書きですが

Gtk2のときも環境変数で指定していて

いまさらですが
mikutter.rb の
ENV['LIBOVERLAY_SCROLLBAR'] = '0'
のことだとすると、GTK3 的にはこれを
ENV['GTK_OVERLAY_SCROLLING'] = '0'
にするだけですね……。

mikutter.rb で設定するのが妥当なのか、という観点はありますが。

他の形式にエクスポート: Atom PDF