OSDN Git Service

ShowUserInfoがクラスのプロパティを操作していたので修正
authorkiri_feather <kiri_feather@users.sourceforge.jp>
Tue, 22 Feb 2011 11:17:19 +0000 (11:17 +0000)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 18 Feb 2012 14:19:06 +0000 (23:19 +0900)
削除イベントのpostクラス参照を削除
削除イベントの処理を全てメインスレッドで行うよう変更
発言複数選択時に新着があると、選択状態が解除されてしまうバグ修正
ソート順変更と発言削除が重なったとき、エラーになる場合があったので対処
再起動をMe.Closeしてから行うように変更

git-svn-id: http://svn.sourceforge.jp/svnroot/tween/trunk@1462 e39ad16e-3079-482e-bb30-4b4d378143b6

Tween/ShowUserInfo.vb
Tween/StatusDictionary.vb
Tween/Tween.vb
Tween/Twitter.vb

index f5937f5..593a183 100644 (file)
@@ -120,8 +120,8 @@ Public Class ShowUserInfo
     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
index 97da8c7..eefa85e 100644 (file)
@@ -679,11 +679,8 @@ Public NotInheritable Class TabInformations
         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
index 99ec1de..31b681f 100644 (file)
@@ -1294,29 +1294,31 @@ Public Class TweenMain
         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 @@ Public Class TweenMain
         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 @@ Public Class TweenMain
         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 @@ Public Class TweenMain
 
         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 @@ RETRY:
         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 @@ RETRY:
 #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 @@ RETRY:
     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
 
index cf9423d..87cadf1 100644 (file)
@@ -2823,7 +2823,7 @@ Public Class Twitter
     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 @@ Public Class Twitter
                     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