svnno****@sourc*****
svnno****@sourc*****
2011年 2月 22日 (火) 20:17:20 JST
Revision: 1462 http://sourceforge.jp/projects/tween/svn/view?view=rev&revision=1462 Author: kiri_feather Date: 2011-02-22 20:17:19 +0900 (Tue, 22 Feb 2011) Log Message: ----------- ShowUserInfoがクラスのプロパティを操作していたので修正 削除イベントのpostクラス参照を削除 削除イベントの処理を全てメインスレッドで行うよう変更 発言複数選択時に新着があると、選択状態が解除されてしまうバグ修正 ソート順変更と発言削除が重なったとき、エラーになる場合があったので対処 再起動をMe.Closeしてから行うように変更 Modified Paths: -------------- trunk/Tween/ShowUserInfo.vb trunk/Tween/StatusDictionary.vb trunk/Tween/Tween.vb trunk/Tween/Twitter.vb -------------- next part -------------- Modified: trunk/Tween/ShowUserInfo.vb =================================================================== --- trunk/Tween/ShowUserInfo.vb 2011-02-22 10:29:04 UTC (rev 1461) +++ trunk/Tween/ShowUserInfo.vb 2011-02-22 11:17:19 UTC (rev 1462) @@ -120,8 +120,8 @@ End Function Private Sub ShowUserInfo_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed - TweenMain.TopMost = Not TweenMain.TopMost - TweenMain.TopMost = Not TweenMain.TopMost + 'TweenMain.TopMost = Not TweenMain.TopMost + 'TweenMain.TopMost = Not TweenMain.TopMost End Sub Private Sub ShowUserInfo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Modified: trunk/Tween/StatusDictionary.vb =================================================================== --- trunk/Tween/StatusDictionary.vb 2011-02-22 10:29:04 UTC (rev 1461) +++ trunk/Tween/StatusDictionary.vb 2011-02-22 11:17:19 UTC (rev 1462) @@ -679,11 +679,8 @@ End SyncLock End Sub - Public Sub RemovePostReserve(ByVal id As Long, ByRef post As PostClass) + Public Sub RemovePostReserve(ByVal id As Long) SyncLock LockObj - post = Nothing - Dim tmp As PostClass = Me.Item(id) - If tmp IsNot Nothing Then post = tmp.Copy Me._deletedIds.Add(id) Me.DeletePost(id) End SyncLock Modified: trunk/Tween/Tween.vb =================================================================== --- trunk/Tween/Tween.vb 2011-02-22 10:29:04 UTC (rev 1461) +++ trunk/Tween/Tween.vb 2011-02-22 11:17:19 UTC (rev 1462) @@ -1294,29 +1294,31 @@ End Try 'スクロール制御後処理 - Try - If befCnt <> _curList.VirtualListSize Then - Select Case smode - Case -3 - '最上行 - _curList.EnsureVisible(0) - Case -2 - '最下行へ - If _curList.VirtualListSize > 0 Then _curList.EnsureVisible(_curList.VirtualListSize - 1) - Case -1 - '制御しない - Case Else - '表示位置キープ - If _curList.VirtualListSize > 0 AndAlso _statuses.IndexOf(_curTab.Text, topId) > -1 Then - _curList.EnsureVisible(_curList.VirtualListSize - 1) - _curList.EnsureVisible(_statuses.IndexOf(_curTab.Text, topId)) - End If - End Select - End If - Catch ex As Exception - ex.Data("Msg") = "Ref2" - Throw - End Try + If smode <> -1 Then + Try + If befCnt <> _curList.VirtualListSize Then + Select Case smode + Case -3 + '最上行 + If _curList.VirtualListSize > 0 Then _curList.EnsureVisible(0) + Case -2 + '最下行へ + If _curList.VirtualListSize > 0 Then _curList.EnsureVisible(_curList.VirtualListSize - 1) + Case -1 + '制御しない + Case Else + '表示位置キープ + If _curList.VirtualListSize > 0 AndAlso _statuses.IndexOf(_curTab.Text, topId) > -1 Then + _curList.EnsureVisible(_curList.VirtualListSize - 1) + _curList.EnsureVisible(_statuses.IndexOf(_curTab.Text, topId)) + End If + End Select + End If + Catch ex As Exception + ex.Data("Msg") = "Ref2" + Throw + End Try + End If '新着通知 NotifyNewPosts(notifyPosts, @@ -1391,7 +1393,7 @@ If _endingFlag Then Exit Sub For Each tab As TabPage In ListTab.TabPages Dim lst As DetailsListView = DirectCast(tab.Tag, DetailsListView) - If lst.SelectedIndices.Count > 0 Then + If lst.SelectedIndices.Count > 0 AndAlso lst.SelectedIndices.Count < 61 Then selId.Add(tab.Text, _statuses.GetId(tab.Text, lst.SelectedIndices)) Else selId.Add(tab.Text, New Long(0) {-2}) @@ -1508,7 +1510,7 @@ If _curList.SelectedIndices.Count <> 1 Then Exit Sub _curItemIndex = _curList.SelectedIndices(0) - If _curItemIndex > _curList.VirtualListSize - 1 Then Exit Sub + 'If _curItemIndex > _curList.VirtualListSize - 1 Then Exit Sub _curPost = GetCurTabPost(_curItemIndex) @@ -2688,8 +2690,10 @@ If _statuses.Tabs(_curTab.Text).AllCount > 0 AndAlso _curPost IsNot Nothing Then Dim idx As Integer = _statuses.Tabs(_curTab.Text).IndexOf(_curPost.StatusId) - SelectListItem(_curList, idx) - _curList.EnsureVisible(idx) + If idx > -1 Then + SelectListItem(_curList, idx) + _curList.EnsureVisible(idx) + End If End If _curList.Refresh() _modifySettingCommon = True @@ -8238,7 +8242,7 @@ End If Dim fIdx As Integer = -1 - If Index IsNot Nothing Then + If Index IsNot Nothing AndAlso Not (Index.Count = 1 AndAlso Index(0) = -1) Then LView.SelectedIndices.Clear() For Each idx As Integer In Index If idx > -1 AndAlso LView.VirtualListSize > idx Then @@ -9869,11 +9873,11 @@ #Region "Userstream" Private _isActiveUserstream As Boolean = False - Private Sub tw_PostDeleted(ByVal id As Long, ByRef post As PostClass) - _statuses.RemovePostReserve(id, post) + Private Sub tw_PostDeleted(ByVal id As Long) Try If InvokeRequired AndAlso Not IsDisposed Then Invoke(Sub() + _statuses.RemovePostReserve(id) If _curTab IsNot Nothing AndAlso _statuses.Tabs(_curTab.Text).Contains(id) Then _itemCache = Nothing _itemCacheIndex = -1 @@ -10082,10 +10086,10 @@ Private Sub TweenRestartMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TweenRestartMenuItem.Click _endingFlag = True Try + Me.Close() Application.Restart() Catch ex As Exception MessageBox.Show("Failed to restart. Please run Tween manually.") - Application.Exit() End Try End Sub Modified: trunk/Tween/Twitter.vb =================================================================== --- trunk/Tween/Twitter.vb 2011-02-22 10:29:04 UTC (rev 1461) +++ trunk/Tween/Twitter.vb 2011-02-22 11:17:19 UTC (rev 1462) @@ -2823,7 +2823,7 @@ Public Event UserStreamStarted() Public Event UserStreamStopped() Public Event UserStreamGetFriendsList() - Public Event PostDeleted(ByVal id As Long, ByRef post As PostClass) + Public Event PostDeleted(ByVal id As Long) Public Event UserStreamEventReceived(ByVal eventType As FormattedEvent) Private _lastUserstreamDataReceived As DateTime Private WithEvents userStream As TwitterUserstream @@ -2887,16 +2887,15 @@ Exit Sub ElseIf xElm.Element("delete") IsNot Nothing Then Debug.Print("delete") - Dim post As PostClass = Nothing Dim id As Int64 If xElm.Element("delete").Element("direct_message") IsNot Nothing AndAlso xElm.Element("delete").Element("direct_message").Element("id") IsNot Nothing Then id = CLng(xElm.Element("delete").Element("direct_message").Element("id").Value) - RaiseEvent PostDeleted(id, post) + RaiseEvent PostDeleted(id) ElseIf xElm.Element("delete").Element("status") IsNot Nothing AndAlso xElm.Element("delete").Element("status").Element("id") IsNot Nothing Then id = CLng(xElm.Element("delete").Element("status").Element("id").Value) - RaiseEvent PostDeleted(id, post) + RaiseEvent PostDeleted(id) Else TraceOut("delete:" + line) Exit Sub