Project

General

Profile

Actions

提案 #1563

closed

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

Added by Izumi Tsutsui 5 months ago. Updated 4 months ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
プラグイン名:
settings_gtk
ブランチ:
topic/1563-no-overlay-settings

Description

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

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


Files

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

Related issues

Related to 提案 #1560: タイムラインのスクロールバーを常に表示するようにする終了Actions
Actions #1

Updated by Izumi Tsutsui 5 months ago

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

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

Actions #2

Updated by Izumi Tsutsui 5 months ago

  • Related to 提案 #1560: タイムラインのスクロールバーを常に表示するようにする added
Actions #3

Updated by toshi_a 初音 5 months ago

  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個など、少ない場合
Actions #4

Updated by Izumi Tsutsui 5 months ago

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

漏れがありそうですが↓を2つとも満たせば set_ を使っても良い、かも

  • メソッドチェーンを使えばウィジェットを変数に代入することを避けられる場合
  • 代入するプロパティが1-2個など、少ない場合

解説ありがとうございます。だいたい自分がコードを読んだ感覚的にはそんな感じかなというところです。

実装して書いている側の立場だと、メソッドチェーンでまとめて書いたほうが全体脳内設計を吐き出しやすい一方で、
ドキュメント無しでコードから設計を読み解く(あるいはコード≒設計書になるようにしてサボる)立場から見ると
個別要素が1行ずつ書いてあったほうが把握しやすい、ということかなあ、
みたいな印象です。

添付のパッチ 0001-no-overlay-settings.patch については
set_policyhscroll_policyvscroll_policy の2つを代入する、
というのが微妙ですが、GTK側の設計としてオブジェクト指向的定義に失敗している、という感じですかね。

Actions #5

Updated by toshi_a 初音 5 months ago

  • Status changed from パッチ適用待ち to レビュー待ち
  • Assignee set to Izumi Tsutsui
  • ブランチ set to topic/1563-no-overlay-settings
Actions #6

Updated by toshi_a 初音 5 months ago

TLは今までも常時表示するように意図的に指定していたので酸性だったのですが、設定にもやりだすと、あらゆるところに設定して回る必要があるのできりがないんですが、Gtk2のときも環境変数で指定していて全てのスクロールバーが表示されていたのと、スクロールバー出ているほうが嬉しいと思ってしまうので、TLと設定くらいはスクロールバー出しておきましょうか。

Actions #7

Updated by Izumi Tsutsui 5 months 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 くらいですが。

Actions #8

Updated by Izumi Tsutsui 5 months ago

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

Gtk2のときも環境変数で指定していて全てのスクロールバーが表示されていたのと、

Gtk::Settings.default.gtk_overlay_scrolling = false
を指定すると全部のウインドウに適用されて全部スクロールバーオーバーレイ無効になるっぽいです。
これをどこに書くべきなのかがピンときませんが、plugin/gtk3/gtk3.rb の最初に書いておけば一応効いてるっぽいです。

Actions #9

Updated by toshi_a 初音 5 months ago

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

Actions #10

Updated by toshi_a 初音 5 months ago

  • Status changed from マージ待ち to 終了

merged.

Actions #11

Updated by Izumi Tsutsui 5 months ago

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

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

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

Actions #12

Updated by toshi_a 初音 5 months ago

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

Actions #13

Updated by Izumi Tsutsui 4 months ago

メモ書きですが

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

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

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

Actions

Also available in: Atom PDF