OSDN Git Service

発言一覧の表示位置の固定に ListView.TopItem を使用する
authorKimura Youichi <kim.upsilon@bucyou.net>
Sun, 11 Oct 2015 14:23:38 +0000 (23:23 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sun, 11 Oct 2015 11:51:08 +0000 (20:51 +0900)
TopItem を使用した場合、内部でスクロール位置の差分を計算してスクロールされるため、
EnsureVisible を 2 回実行する場合と比べて余分なスクロールを軽減できる。

http://referencesource.microsoft.com/System.Windows.Forms/winforms/Managed/System/WinForms/ListView.cs.html#1283588d0806650a

OpenTween/Resources/ChangeLog.txt
OpenTween/Tween.cs

index 7707b24..1fd6edd 100644 (file)
@@ -5,6 +5,7 @@
  * CHG: Retweetイベントのイベント一覧での表示を他のイベントと統一 (thx @naminodarie)
  * FIX: Home/Endキーの直後に左右キーを押すと以前の選択ツイートの関連発言に移動してしまう不具合を修正 (thx @coookien!)
  * FIX: 発言詳細部のコンテキストメニューからURLのコピーを実行すると「&」が「&amp;」としてコピーされる不具合を修正 (thx @pO_0q!)
+ * FIX: タイムラインの流速が速い時に発言一覧のスクロールバーがちらつく現象を修正
 
 ==== Ver 1.2.9(2015/09/23)
  * NEW: ウィンドウ最大化中でも発言詳細部やサムネイルの幅の変更が設定に保存されるようしました
index a0ab313..31dd8b1 100644 (file)
@@ -1435,11 +1435,9 @@ namespace OpenTween
                                 break;
                             default:
                                 //表示位置キープ
-                                if (_curList.VirtualListSize > 0 && _statuses.Tabs[_curTab.Text].IndexOf(topId) > -1)
-                                {
-                                    _curList.EnsureVisible(_curList.VirtualListSize - 1);
-                                    _curList.EnsureVisible(_statuses.Tabs[_curTab.Text].IndexOf(topId));
-                                }
+                                var topIndex = _statuses.Tabs[_curTab.Text].IndexOf(topId);
+                                if (_curList.VirtualListSize > 0 && topIndex > -1)
+                                    this._curList.TopItem = _curList.Items[topIndex];
                                 break;
                         }
                     }