OSDN Git Service

巡回とか、お気に入りの全ての開くとかでbrowserの付け替えミスによるAccessViolationの改善
authorh677 <h677>
Sun, 23 May 2004 08:17:45 +0000 (08:17 +0000)
committerh677 <h677>
Sun, 23 May 2004 08:17:45 +0000 (08:17 +0000)
名称不明スレッドのDLごタイトルを取得して通知するように変更

Giko.pas

index c73289d..a416405 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -2484,6 +2484,10 @@ begin
        try
                try
                        if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) and (Assigned(FActiveContent.Browser.Document)) then begin
+                               while (FActiveContent.Browser.ReadyState <> READYSTATE_COMPLETE) and
+                                       (FActiveContent.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
+                                       Application.ProcessMessages;
+                               end;
                                if LowerCase(OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).charset) <> 'shift_jis' then begin
                                        OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).charset := 'shift_jis';
                                end;
@@ -3056,16 +3060,18 @@ begin
                                        boardPlugIn             := Item.ThreadItem.BoardPlugIn;
                                        Item.ThreadItem.Title := GikoSys.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle;
                                        ATitle := Item.ThreadItem.Title;
+                               end else if ATitle = '\81i\96¼\8fÌ\95s\96¾\81j' then begin
+                                       ATitle := GikoSys.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1)).FTitle;
                                end;
                                for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
                                        if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then
-                       TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+                                               TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
                                end;
                                if GetActiveContent = Item.ThreadItem then
                                        InsertBrowserTab(Item.ThreadItem)
                                else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
-                    InsertBrowserTab(Item.ThreadItem, True)
-                else
+                                       InsertBrowserTab(Item.ThreadItem, True)
+                               else
                                        InsertBrowserTab(Item.ThreadItem, False);
 
                                if Item.State = gdsComplete then begin
@@ -3198,7 +3204,7 @@ end;}
 procedure TGikoForm.InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
 
 var
-       i, j: Integer;
+       i, j, idx: Integer;
        favItem : TFavoriteThreadItem;
        newBrowser      : TBrowserRecord;
 begin
@@ -3225,7 +3231,7 @@ begin
                                                        end;
                                                end;
                                                TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[4]);
-                        TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
+                                               TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
                                                FBrowsers.Move(4, 0);
                                        end;
                                        if ActiveTab then begin
@@ -3237,7 +3243,15 @@ begin
                                end;
                        end;
                end;
-
+               idx := BrowserTab.TabIndex;
+               BrowserTab.Tabs.BeginUpdate;
+               //\82¨\8bC\82É\93ü\82è\82Ì\91S\82Ä\8aJ\82­\82Æ\82©\82â\82é\82Æ\81A\8d¡\8aJ\82¢\82Ä\82é\83X\83\8c\82Ìbrowser\82ð\95t\82¯\91Ö\82¦\82é\8b°\82ê\82ª\82 \82é
+               //\8fí\82É\82S\94Ô\96Ú\82ÉActive\82Ì\83u\83\89\83E\83U\82ª\97\88\82È\82¢\82æ\82¤\82É\88Ú\93®\82³\82¹\82é
+               if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil) then begin
+                       j := FBrowsers.IndexOf(FActiveContent.FBrowser);
+                       if j = 4 then
+                               FBrowsers.Move(4, 0);
+               end;
                if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
                        newBrowser := TBrowserRecord.Create;
                        for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
@@ -3252,10 +3266,11 @@ begin
                        end;
                        newBrowser.Browser := TWebBrowser(FBrowsers[4]);
                        FBrowsers.Move(4, 0);
+                       newBrowser.Browser.Navigate(BLANK_HTML);
                        newBrowser.thread := ThreadItem;
                        newBrowser.Repaint := true;
                        newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
-                       newBrowser.Browser.Navigate(BLANK_HTML);
+
                        BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
                        if ActiveTab then begin
                                BrowserTab.TabIndex := 0;
@@ -3275,16 +3290,18 @@ begin
                        end;
                        newBrowser.Browser := TWebBrowser(FBrowsers[4]);
                        FBrowsers.Move(4, 0);
+                       newBrowser.Browser.Navigate(BLANK_HTML);
                        newBrowser.thread := ThreadItem;
                        newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
                        newBrowser.Repaint := true;
-                       newBrowser.Browser.Navigate(BLANK_HTML);
+
                        i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
                        if ActiveTab then begin
                                BrowserTab.TabIndex := i;
                        end;
                end;
-               if ActiveTab then begin
+               BrowserTab.Tabs.EndUpdate;;
+               if(ActiveTab) or (idx = -1) then begin
                        BrowserTab.OnChange(nil);
                end;
        end else begin
@@ -9160,7 +9177,7 @@ procedure TGikoForm.FavoriteTreeViewBrowseFolderActionExecute(
 begin
 
        FavoriteBrowseFolder( FClickNode );
-       BrowserTab.OnChange(nil);
+       //BrowserTab.OnChange(nil);
 
 end;