OSDN Git Service

誤記修正
[gikonavigoeson/gikonavi.git] / Giko.pas
index 627b2e2..0c0374c 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -402,6 +402,13 @@ type
     N74: TMenuItem;
     WikiFAQ: TMenuItem;
     GikoApplicationEvents: TApplicationEvents;
+    N22: TMenuItem;
+    N42: TMenuItem;
+    DAT2: TMenuItem;
+    N75: TMenuItem;
+    DAT3: TMenuItem;
+    N76: TMenuItem;
+    FavoriteTreeItemNameCopyPopupMenu: TMenuItem;
                                procedure FormCreate(Sender: TObject);
                procedure FormDestroy(Sender: TObject);
                procedure BrowserStatusTextChange(Sender: TObject;
@@ -541,6 +548,7 @@ type
     procedure GikoApplicationEventsException(Sender: TObject; E: Exception);
     procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
       Shift: TShiftState; X, Y: Integer);
+    procedure GetResURLMenuClick(Sender: TObject);
        private
                { Private \90é\8c¾ }
                FEnabledCloseButton: Boolean;
@@ -588,7 +596,8 @@ type
                FIsHandledWheel : Boolean;                      ///< \8aù\82É\8eó\82¯\8eæ\82Á\82½ WM_MOUSEWHEEL \82©\82Ç\82¤\82©
                                DiffComp: Boolean;                      //Add by Genyakun \83X\83\8c\82ª\8dX\90V\82³\82ê\82½\82Æ\82«\82ÉTrue\82É\82È\82é
                FOrigenCaption: String;                         //\82¨\8bC\82É\93ü\82è\83c\83\8a\81[\82Ì\83A\83C\83e\83\80\95Ò\8fW\8e\9e\82Ì\95Ò\8fW\91O\82Ì\95\8e\9a\97ñ
-        FPreviewBrowserRect: TRect;                    ///< \83v\83\8c\83r\83\85\81[\82Ì\95\\8e¦\88Ê\92u\82ð\8bL\89¯\82·\82é
+               FPreviewBrowserRect: TRect;                     ///< \83v\83\8c\83r\83\85\81[\82Ì\95\\8e¦\88Ê\92u\82ð\8bL\89¯\82·\82é
+               FActionListGroupIndexes: array of Integer;      ///<GikoDM\8fã\82Ì\83A\83N\83V\83\87\83\93\83\8a\83X\83g\82Ì\8ae\83A\83N\83V\83\87\83\93\82É\90Ý\92è\82³\82ê\82½GroupIndex\82ð\95Û\91\82·\82é\94z\97ñ
                procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
                procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
                procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
@@ -648,12 +657,20 @@ type
                function GetScreenCursor(): TCursor;
                //\83J\81[\83\\83\8b\82ð\90Ý\92è\82·\82é
                procedure SetScreenCursor(Cursor : TCursor);
-               //! \83A\83N\83V\83\87\83\93\82Ì\83`\83F\83b\83N\8fó\91Ô\82Ì\8f\89\8aú\89»
-               procedure InitActionChecked();
                //! \83_\83E\83\93\83\8d\81[\83h\83R\83\93\83g\83\8d\81[\83\8b\83X\83\8c\83b\83h\82Ì\90\90¬
                procedure CreateControlThread();
                //! \83u\83\89\83E\83U\82Ì\90\90¬
                procedure CreateBrowsers(count: Integer);
+               //! ActionList\82ÌGroupIndex\82Ì\95Û\91
+               procedure GetGroupIndex(ActionList: TActionList);
+               //! ActionList\82ÌGroupIndex\82Ì\90Ý\92è
+               procedure SetGroupIndex(ActionList: TActionList);
+               //! \8ew\92è\82³\82ê\82½\83X\83\8c\83b\83h\82ð\8aJ\82­(\83\8d\83O\82ª\96³\82¢\82Æ\82« or \8ew\92èJUMP\82Ü\82Å\91«\82è\82È\82¢\82Æ\82«\82ÍDL\82·\82é)
+               procedure OpenThreadItem(Thread: TThreadItem; URL: String);
+               //! ListView\81i\83X\83\8c\83b\83h\88ê\97\97\81j\82ð\8dX\90V\82·\82é
+               procedure RefreshListView(Thread: TThreadItem);
+               //! \83X\83\8c\83b\83h\88ê\97\97\82Ì\95\\8e¦\94Í\88Í\90Ý\92è\83`\83F\83b\83N\83N\83\8a\83A
+               procedure ClearThreadRengeAction;
        protected
                procedure CreateParams(var Params: TCreateParams); override;
                procedure WndProc(var Message: TMessage); override;
@@ -783,6 +800,7 @@ type
                function WebBrowserClick(Sender: TObject): WordBool;
                //! \83c\81[\83\8b\83o\81[\82É\83X\83\8c\8di\8d\9e\82Ý\83R\83\93\83{\83{\83b\83N\83X\82ð\90Ý\92è\82·\82é
                procedure SetSelectComboBox();
+
        published
                property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
        end;
@@ -820,7 +838,8 @@ uses
        FavoriteArrange, AddressHistory, Preview, Gesture,
        About, Option, Round, Splash, Sort, ListSelect, Imm,
        NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
-       HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage;
+       HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage,
+  InputAssistDataModule;
 
 const
        BLANK_HTML: string = 'about:blank';
@@ -870,12 +889,17 @@ begin
        Writeln('============================================================');
 {$ENDIF}
 //try
+       Sort.SetSortDate(Now());
+       
        FTreeType := gttNone;
        // \8bN\93®\8e\9e\82É\95Û\91\82³\82ê\82Ä\82µ\82Ü\82¤\91Î\8dô
        FStartUp := true;
        Application.HookMainWindow(Hook);
        FIsIgnoreResize := rtResizing;
-
+       //ActionList\82ÌGuoupIndex\82ð\95Û\91\82µ\82Ä\81A0\82É\83N\83\8a\83A\82·\82é\81B
+       //(\8bN\93®\8e\9e\82É\83c\81[\83\8b\83{\83^\83\93\82ÌDown\83v\83\8d\83p\83e\83B\82ð\94½\89f\82³\82¹\82é\93s\8d\87\8fãGroupIndex\82Í\90Ý\92è\82Å\82«\82È\82¢)
+       //\82±\82ê\88È\8cãSet\81`\82Å\8dÄ\90Ý\92è\82·\82é\82Ü\82Å\81AAction\82ÌChecked\82ð\82¢\82\82é\82Æ\82«\82Í\92\8d\88Ó\81I
+       GetGroupIndex(GikoDM.GikoFormActionList);
        FSearchDialog := nil;
        CreateBrowsers(BROWSER_COUNT);
 
@@ -945,6 +969,59 @@ begin
        //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
        GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
 
+       //\83~\83\85\81[\83g\82Ì\8fó\91Ô\82ð\90Ý\92è
+       GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
+
+       // \83\8c\83X\95\\8e¦\94Í\88Í
+       FResRangeMenuSelect := GikoSys.ResRange;
+       case GikoSys.ResRange of
+       Ord( grrAll ):
+               begin
+                       GikoDM.AllResAction.Execute;
+               end;
+       Ord( grrSelect ):
+               begin
+                       SelectComboBox.Text := SelectComboBox.Items[ 1 ];
+                       GikoDM.SelectResAction.Checked := True;
+               end;
+       else
+               case FResRangeMenuSelect of
+               Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked        := True;
+               Ord( grrNew ):  GikoDM.OnlyNewResAction.Checked := True;
+               100:                    GikoDM.OnlyAHundredResAction.Checked            := True;
+               end;
+       end;
+
+       // \83X\83\8c\83b\83h\88ê\97\97\95\\8e¦\94Í\88Í
+       case GikoSys.Setting.ThreadRange of
+       gtrAll:
+               begin
+                       GikoDM.AllItemAction.Checked := True;
+                       ViewType := gvtAll;
+               end;
+       gtrLog:
+               begin
+                       GikoDM.LogItemAction.Checked := True;
+                       ViewType := gvtLog;
+               end;
+       gtrNew:
+               begin
+                       GikoDM.NewItemAction.Checked := True;
+                       ViewType := gvtNew;
+               end;
+       gtrLive:
+               begin
+                       GikoDM.LiveItemAction.Checked := True;
+                       ViewType := gvtLive;
+               end;
+       gtrArch:
+               begin
+                       GikoDM.ArchiveItemAction.Checked := True;
+                       ViewType := gvtArch;
+               end;
+       end;
+
+
        //\83u\83\89\83E\83U\83^\83u\83t\83H\83\93\83g
        BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
        BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
@@ -953,9 +1030,27 @@ begin
                BrowserTab.Font.Style := [fsBold];
        if GikoSys.Setting.BrowserTabFontItalic then
                BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
+       BrowserTab.DoubleBuffered := True;
        FDragWFirst := false;
        SetContent(BrowserNullTab);                                                                                                     //\83u\83\89\83E\83U\82ð\8bó\94\92\95\\8e¦
 
+       //\83u\83\89\83E\83U\83^\83u
+       GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
+
+       if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
+               GikoDM.BrowserTabTopAction.Checked := True;
+       end else begin
+               GikoDM.BrowserTabBottomAction.Checked := True;
+       end;
+
+       if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
+               GikoDM.BrowserTabTabStyleAction.Checked := True;
+       end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
+               GikoDM.BrowserTabButtonStyleAction.Checked := True;
+       end else begin
+               GikoDM.BrowserTabFlatStyleAction.Checked := True;
+       end;
+
        //\83v\83\8d\83O\83\8c\83X\83o\81[\82Ì\8f\89\8aú\89»
        ProgressBar.Parent := StatusBar;
        ProgressBar.Top := 2;
@@ -1206,7 +1301,8 @@ begin
        FavoriteAddToolButton.Caption := '\92Ç\89Á...';
        AntiIndivAbonMenuItem.Caption := '\8cÂ\95Ê\82 \82Ú\81`\82ñ\89ð\8f\9c';
 
-
+       //\93ü\97Í\83A\83V\83X\83g\8b@\8d\\82Ì\8f\89\8aú\89»
+       InputAssistDM.Init(GikoSys.GetInputAssistFileName);
 end;
 
 // CoolBar \82Ì\90Ý\92è\82ð\95Ï\90\94\82É\95Û\91
@@ -1347,51 +1443,20 @@ begin
                GikoDM.BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
                GikoDM.BrowserNameBarVisibleActionExecute( nil );
 
-               //\83u\83\89\83E\83U\83^\83u
-               GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
-               GikoDM.BrowserTabVisibleActionExecute(nil);
-
-               if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
-                       GikoDM.BrowserTabTopAction.Checked := True;
-                       GikoDM.BrowserTabTopActionExecute(nil);
-               end else begin
-                       GikoDM.BrowserTabBottomAction.Checked := True;
-                       GikoDM.BrowserTabBottomActionExecute(nil);
-               end;
-
-               if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
-                       GikoDM.BrowserTabTabStyleAction.Checked := True;
-                       GikoDM.BrowserTabTabStyleActionExecute(nil);
-               end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
-                       GikoDM.BrowserTabButtonStyleAction.Checked := True;
-                       GikoDM.BrowserTabButtonStyleActionExecute(nil);
-               end else begin
-                       GikoDM.BrowserTabFlatStyleAction.Checked := True;
-                       GikoDM.BrowserTabFlatStyleActionExecute(nil);
-               end;
-
-               // ListView \82Ì\83w\83b\83_\83h\83\89\83b\83O
-//             ListView.FullDrag := True;
-
                // CoolBar \95\9c\8c³
                LoadCoolBarSettings;
 
                //\8fd\97v\81@\82±\82ê\82ª\82È\82¢\82Æ\83c\81[\83\8b\83{\83^\83\93\82Ì\8dX\90V\82ª\82¨\82©\82µ\82­\82È\82é
 //             ResetBandInfo( ListCoolBar, ListToolBar );
                FIsIgnoreResize := rtNone;
-               //\83c\81[\83\8b\83o\81[\82Ì\8dX\90V\82ð\8fI\82¦\82½\8cã\82É\82â\82ç\82È\82¢\82Æ\82¢\82¯\82È\82¢\82Ì\82©\82à
-               //\83A\83N\83V\83\87\83\93\82Ì\83`\83F\83b\83N\8fó\91Ô\82ð\8f\89\8aú\89»
-               InitActionChecked();
 
                //FormCrete\82©\82ç\88Ú\93®\81B
                if GikoSys.Setting.TabAutoLoadSave then begin
                        GikoDM.TabAutoLoadAction.Execute;
                end;
-               //\82É\82¿\82á\82ñ\8cê\88Ä\93à\83T\83|\81[\83g\8b@\94\
-               if GikoSys.Setting.GengoSupport then begin
-               //\97\\92è\92n
-               //Test\8cü\82¯
-               end;
+
+        //ActionList\82ÌGroupIndex\82ð\8c³\82É\96ß\82·
+               SetGroupIndex(GikoDM.GikoFormActionList);
 
                FStartUp := false;
        end;
@@ -1401,21 +1466,32 @@ procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
 begin
 //     if GikoForm.WindowState <> wsMinimized then
 //             SaveCoolBarSettings;
+       CanClose := True;
        if ( GikoSys.Setting.ShowDialogForEnd ) and
                        (MessageDlg('\83M\83R\83i\83r\82ð\8fI\97¹\82µ\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
                CanClose := false;
                        Exit;
-       end else begin
-               CanClose := True;
-               if GikoSys.Setting.TabAutoLoadSave then begin
-                       GikoDM.TabAutoSaveAction.Execute;
+       end;
+
+       if GikoSys.Setting.TabAutoLoadSave then begin
+               GikoDM.TabAutoSaveAction.Execute;
+       end;
+
+       if (SearchDialog <> nil) then begin
+               if (SearchDialog.Visible) then begin
+                       SearchDialog.Close;
+                       try
+                               SearchDialog.Release;
+                       except
+                       end;
+                       SearchDialog := nil;
                end;
        end;
-    {    //2ch\8c¾\8cȩ̂²ÙFree
+       {    //2ch\8c¾\8cȩ̂²ÙFree
                if GikoSys.Setting.Gengo <> nil then begin
                                GikoSys.Setting.Gengo.Free;
         end;
-    }
+       }
        Application.UnhookMainWindow(Hook);
        Application.Terminate;
 end;
@@ -1480,6 +1556,8 @@ begin
        // CoolBar \95Û\91
        //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
 
+       //\93ü\97Í\83A\83V\83X\83g\8b@\8d\\82Ì\90Ý\92è\82Ì\95Û\91
+       InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
 
        //\82¨\8bC\82É\93ü\82è\95Û\91
        try
@@ -1746,7 +1824,11 @@ begin
        GikoDM.TabsOpenAction.Execute;
 end;
 
-
+{!
+\todo \89½\8cÌ IE 7 \82Å\82Í about:.. \82É\82È\82é\82Ì\82©
+      (IE 7 \82ª about:.. \82ð\92Ç\89Á\82µ\82Ä\82¢\82é\82Ì\82©\81A\83M\83R\83i\83r\82ª\92Ç\89Á\82µ\82Ä\82¢\82é\82Ì\82©)
+      \92²\8d¸\82·\82é\82±\82Æ
+}
 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
 var
        p: TPoint;
@@ -1766,7 +1848,14 @@ var
        e: IHTMLElement;
        Ext: string;
        PathRec: TPathRec;
-begin
+  Text2: string;
+begin
+       // \83M\83R\83i\83r\82Í\83\8c\83X\83A\83\93\83J\81[\82ª about:blank.. \82Å\8en\82Ü\82é\82±\82Æ\82ð\8aú\91Ò\82µ\82Ä\82¢\82é\82ª
+  // IE 7 \82Å\82Í about:blank.. \82Å\82Í\82È\82­ about:.. \82É\82È\82é\82Ì\82Å\81A\92u\8a·\82·\82é(\93\8a\82°\82â\82è)
+       if Pos('about:..', Text) = 1 then
+       Text2 := 'about:blank..' + Copy( Text, Length('about:..')+1, Length(Text) )
+  else
+       Text2 := Text;
        if not( TObject(Sender) is TWebBrowser )then
                Exit;
        try
@@ -1793,7 +1882,7 @@ begin
                Exit;
        end;
 
-       StatusBar.Panels[1].Text := Text;
+       StatusBar.Panels[1].Text := Text2;
 
        if FHint <> nil then begin
                FHint.ReleaseHandle;
@@ -1810,8 +1899,8 @@ begin
 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
 
        s := '';
-       Ext := AnsiLowerCase(ExtractFileExt(Text));
-       if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
+       Ext := AnsiLowerCase(ExtractFileExt(Text2));
+       if (Pos('http://', Text2) = 1) and (GikoSys.Setting.PreviewVisible) and
                        ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
                if FPreviewBrowser = nil then begin
                        FPreviewBrowser := TPreviewBrowser.Create(Self);
@@ -1819,12 +1908,12 @@ begin
                        TOleControl(FPreviewBrowser).Parent := nil;
                end;
                FPreviewBrowser.Navigate(BLANK_HTML);//\91O\89ñ\82Ì\83v\83\8c\83r\83\85\81[\89æ\91\9c\8fÁ\8b\8e\97p
-               FPreviewURL := Text;
+               FPreviewURL := Text2;
                PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
                PreviewTimer.Enabled := True;
-       end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
-               if Pos('mailto:', Text) = 1 then begin
-                       s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
+       end else if (Pos('about:blank', Text2) = 1) or (Pos('http://', Text2) = 1) or (Pos('mailto:', Text2) = 1) then begin
+               if Pos('mailto:', Text2) = 1 then begin
+                       s := StringReplace(Text2, 'mailto:', '', [rfIgnoreCase]);
                        //\83M\83R\83i\83r\83X\83\8c \83p\81[\83g3\82Ì466\8e\81\82É\8a´\8eÓ
                        GetCursorPos(p);
                        p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
@@ -1834,8 +1923,8 @@ begin
                                tmp2 := ZenToHan(e.Get_outerText);
                                if (GikoSys.IsNumeric(tmp2)) then begin
                                        //\82\93\82Í\83\8c\83X\94Ô\8d\86\82Á\82Û\82¢\82Á\82·\81B
-                                       wkIntSt := StrToInt(tmp2);
-                                       wkIntTo := StrToInt(tmp2);
+                                       wkIntSt := StrToInt64(tmp2);
+                                       wkIntTo := StrToInt64(tmp2);
                                                //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
                                        FHint.PopupType := gptThread;
                                        HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
@@ -1846,7 +1935,7 @@ begin
                        end;
                end else begin
                        threadItem := GetActiveContent;
-                       URL := THTMLCreate.GetRespopupURL(Text, threadItem.URL);
+                       URL := THTMLCreate.GetRespopupURL(Text2, threadItem.URL);
                        PathRec := Gikosys.Parse2chURL2(URL);
                        if (PathRec.FNoParam) then begin
                                PathRec.FSt := 1;
@@ -2231,7 +2320,6 @@ var
        s: string;
        boardPlugIn : TBoardPlugIn;
        i: Integer;
-       browserRec      : TBrowserRecord;
        Res : TResRec;
 begin
        try
@@ -2255,11 +2343,13 @@ begin
                                                GikoSys.Setting.BoardSortIndex := 0;
                                                GikoSys.Setting.BoardSortOrder := True;
                                        end;
+                                       Sort.SetSortDate(Now());
                                        SetActiveList(Item.Board);
                                end;
                                Item.Board.Modified := True;
                                Item.Board.IsThreadDatRead := True;
                                PlaySound('New');
+                               ListView.Refresh;
                        end else if Item.DownType = gdtThread then begin
                                //\83X\83\8c
                                Item.SaveItemFile;
@@ -2283,15 +2373,12 @@ begin
                                end;
                                if GikoSys.Setting.BrowserTabVisible then begin
                                        if GetActiveContent = Item.ThreadItem then
-                                               browserRec := InsertBrowserTab(Item.ThreadItem)
+                                               InsertBrowserTab(Item.ThreadItem)
                                        else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
-                                               browserRec := InsertBrowserTab(Item.ThreadItem, True)
+                                               InsertBrowserTab(Item.ThreadItem, True)
                                        else
-                                               browserRec := InsertBrowserTab(Item.ThreadItem, False);
-                                       if browserRec.Thread = BrowserNullTab.Thread then begin
-                                               browserRec.Movement := BrowserNullTab.Movement;
-                                               BrowserNullTab.Movement := '';
-                                       end;
+                                               InsertBrowserTab(Item.ThreadItem, False);
+
                                end else begin
                                        if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
                                                                                                InsertBrowserTab(Item.ThreadItem);
@@ -2328,11 +2415,14 @@ begin
                                                gvtAll: ListView.Items.Count := TBoard(ActiveList).Count;
                                                gvtLog: ListView.Items.Count := TBoard(ActiveList).LogThreadCount;
                                                gvtNew: ListView.Items.Count := TBoard(ActiveList).NewThreadCount;
+                                               gvtArch: ListView.Items.Count := TBoard(ActiveList).ArchiveThreadCount;
+                                               gvtLive: ListView.Items.Count := TBoard(ActiveList).LiveThreadCount;
                                                gvtUser: ListView.Items.Count := TBoard(ActiveList).UserThreadCount;
                                        end;
                                end;
+                               RefreshListView(Item.ThreadItem);
                        end;
-                       ListView.Refresh;
+
                end else if Item.State = gdsNotModify then begin
                        //\95Ï\8dX\83i\83V
 {                      if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
@@ -2530,9 +2620,9 @@ begin
                        BrowserNullTab := TBrowserRecord.Create;
                        BrowserNullTab.Browser := Browser;
                end;
-               if BrowserNullTab.thread <> ThreadItem then begin
-               BrowserNullTab.Movement := '';
-               end;
+//             if BrowserNullTab.thread <> ThreadItem then begin
+//                     BrowserNullTab.Movement := '';
+//             end;
                BrowserNullTab.thread := ThreadItem;
                Result := BrowserNullTab;
                BrowserTab.TabIndex := -1;
@@ -2549,7 +2639,7 @@ var
        BBSID: string;
        FileName: string;
        sTitle: string;
-       doc:  Variant;
+       doc: Variant;
        s: string;
        i: Integer;
        idx: Integer;
@@ -2566,7 +2656,6 @@ begin
                (Assigned(FActiveContent.Browser.Document)) then begin
                try
                try
-                       Sleep(1);
                        FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
                except
                        on E: Exception do
@@ -2624,7 +2713,6 @@ begin
                if (not Assigned(Thread.Browser.Document)) then begin
                        Thread.Browser.Navigate('about:blank');
                end;
-
                while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
                                (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
                        Application.ProcessMessages;
@@ -2633,14 +2721,32 @@ begin
                        end;
                end;
 
+               if (Thread <> nil) and (ThreadItem <>nil) then begin
+                       BrowserBoardNameLabel.Caption := ThreadPTitle;
+                       ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
+                       BrowserNameLabel.Caption := ThreadTitle;
+                       ItemImage.Picture := nil;
+                       if ThreadIsLog then
+                               if ThreadNewArraical then
+                                       ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
+                               else
+                                       ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
+                       else
+                               ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
+
+                       ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
+                       BrowserNameLabel.Left := ItemImage.Left + 20;
+
+               end;
                //ActiveContent\81@\82Ì\8dX\90V
                FActiveContent := Thread;
 
                if not ThreadIsLog then begin
                        Self.Caption := GikoDataModule.CAPTION_NAME ;
-            //\83X\83e\81[\83^\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\97e\97Ê\82ð\8fÁ\8b\8e
+                       //\83X\83e\81[\83^\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\97e\97Ê\82ð\8fÁ\8b\8e
                        StatusBar.Panels[THREADSIZE_PANEL].Text := '';
                        try
+                               Thread.Browser.BringToFront;
                                s := '<HTML><BODY><CENTER>\82±\82Ì\83X\83\8c\83b\83h\82Í\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ</CENTER></BODY></HTML>';
                                doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
                                doc.open;
@@ -2648,10 +2754,11 @@ begin
                                doc.Write(s);
                                doc.Close;
                        finally
+                               
                        end;
                end else begin
                        Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + ThreadTitle + ']';
-            //\83X\83e\81[\83^\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\97e\97Ê\82ð\95\\8e¦
+                       //\83X\83e\81[\83^\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\82Ì\97e\97Ê\82ð\95\\8e¦
                        StatusBar.Panels[THREADSIZE_PANEL].Text := Format('%6.2f kB', [ThreadItem.Size / 1024]);
                        StatusBar.Panels[THREADSIZE_PANEL].Width :=
                                Max(StatusBar.Canvas.TextWidth(StatusBar.Panels[THREADSIZE_PANEL].Text), 70);
@@ -2661,42 +2768,14 @@ begin
                                Thread.Repaint := false;
 
                                Thread.Browser.OnStatusTextChange := nil;
-                               doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
-
-                               //GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
-                               HTMLCreater.CreateHTML2(doc, ThreadItem, sTitle);
+                               LockWindowUpdate(Thread.Browser.ParentWindow);
+                               HTMLCreater.CreateHTML2(Thread.Browser, ThreadItem, sTitle);
                                Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
-
-                               if ThreadItem = nil then begin
-                                       FActiveContent := nil;
-                                       BrowserTab.Repaint;
-                                       Exit;
-                               end;
                                PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( Thread.Browser ), 0 );
                        end;
                end;
-               if (Thread <> nil) and (ThreadItem <>nil) then begin
-                       BrowserBoardNameLabel.Caption := ThreadPTitle;
-                       ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
-                       BrowserNameLabel.Caption := ThreadTitle;
-                       ItemImage.Picture := nil;
-                       if ThreadIsLog then
-                               if ThreadNewArraical then
-                                       ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
-                               else
-                                       ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
-                       else
-                               ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
-
-                       ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
-                       BrowserNameLabel.Left := ItemImage.Left + 20;
 
-                       //Thread\82Ì\94Â\82Æ\95\\8e¦\82µ\82Ä\82¢\82é\94Â\82ª\93¯\82\82È\82ç\95`\89æ\82ð\8dX\90V\82·\82é
-                       if (FActiveList is TBoard) and (TBoard(ActiveList) = ThreadItem.ParentBoard) then
-                               ListView.Refresh;
-               end else begin
-                       FActiveContent := nil;
-               end;
+               RefreshListView(ThreadItem);
        finally
                Screen.Cursor := crDefault;
        end;
@@ -2803,7 +2882,10 @@ begin
                        //gvtAll: ListView.Items.Count := Board.Count;
                        gvtLog: Board.LogThreadCount := Board.GetLogThreadCount;
                        gvtNew: Board.NewThreadCount := Board.GetNewThreadCount;
+                       gvtArch: Board.ArchiveThreadCount := Board.GetArchiveThreadCount;
+                       gvtLive: Board.LiveThreadCount := Board.GetLiveThreadCount;
                        gvtUser: Board.UserThreadCount:= Board.GetUserThreadCount;
+
                end;
 
                SetActiveList(Board);
@@ -2835,6 +2917,14 @@ begin
                                ListView.Canvas.Font.Color := clGreen;
                                s := '\82±\82Ì\83r\83\85\81[\82É\82Í\90V\92\85\83A\83C\83e\83\80\82ª\82 \82è\82Ü\82¹\82ñ\81B';
                        end;
+                       gvtArch: begin
+                               ListView.Canvas.Font.Color := clFuchsia;
+                               s := '\82±\82Ì\83r\83\85\81[\82É\82ÍDAT\97\8e\82¿\83A\83C\83e\83\80\82ª\82 \82è\82Ü\82¹\82ñ\81B';
+                       end;
+                       gvtLive: begin
+                               ListView.Canvas.Font.Color := clMaroon;
+                               s := '\82±\82Ì\83r\83\85\81[\82É\82Í\90\91\83A\83C\83e\83\80\82ª\82 \82è\82Ü\82¹\82ñ\81B';
+                       end;
                        gvtUser: begin
                                ListView.Canvas.Font.Color := clNavy;
                                s := '\82±\82Ì\83r\83\85\81[\82É\82Í\83^\83C\83g\83\8b\82ª\81u%s\81v\82ð\8aÜ\82Þ\83A\83C\83e\83\80\82ª\82 \82è\82Ü\82¹\82ñ\81B';
@@ -2992,12 +3082,27 @@ end;
 procedure TGikoForm.DeleteHistory( threadItem: TThreadItem );
 var
        i: Integer;
-begin
+       node: TTreeNode;
+begin
+       // \83L\83\83\83r\83l\83b\83g\82É\97\9a\97ð\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82½\82ç\81A
+       // \83L\83\83\83r\83l\83b\83g\93à\82Ì\83A\83C\83e\83\80\82à\8dí\8f\9c\82·\82é\81B
+       if (FTreeType = gttHistory) then begin
+               node := TreeView.Items.GetFirstNode;
+               while (node <> nil) do begin
+                       if ( TFavoriteThreadItem(node.Data).Item  = threadItem ) then begin
+                               TreeView.Items.Delete(node);
+                               TreeView.Refresh;
+                               node := nil;
+                       end else begin
+                               node := node.GetNext;
+                       end;
+               end;
+       end;
        for i := 0 to FHistoryList.Count - 1 do begin
-               if threadItem.URL = TFavoriteThreadItem( FHistoryList.Items[i] ).URL then begin
+               if threadItem = TFavoriteThreadItem( FHistoryList.Items[i] ).Item then begin
                        TFavoriteThreadItem( FHistoryList.Items[ i ] ).Free;
                        FHistoryList.Delete(i);
-            FHistoryList.Capacity := FHistoryList.Count;
+                       FHistoryList.Capacity := FHistoryList.Count;
                        Break;
                end;
        end;
@@ -3043,7 +3148,7 @@ begin
                        // title \82Í\8d¡\82Ì\82Æ\82±\82ë\8eg\82Á\82Ä\82¢\82È\82¢
                        saveList.Add(
                                '<history url="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).URL ) + '"' +
-                               ' title="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).Title ) + '"/>');
+                               ' title="' + HtmlEncode( MojuUtils.Sanitize(TFavoriteThreadItem( FHistoryList[ i ] ).Title )) + '"/>');
                end;
                saveList.Add('</address>');
                saveList.SaveToFile( GikoSys.GetConfigDir + 'History.xml' );
@@ -3062,15 +3167,21 @@ var
        HistoryNode     : IXMLNode;
        s                                               : string;
        favItem                 : TFavoriteThreadItem;
+{$IFDEF DEBUG}
+       st, rt : Cardinal;
+{$ENDIF}
 begin
+{$IFDEF DEBUG}
+       st := GetTickCount;
+{$ENDIF}
 
        fileName := GikoSys.GetConfigDir + 'History.xml';
 
        if FileExists( fileName ) then begin
                try
-            XMLDoc := IXMLDocument.Create;
+                       XMLDoc := IXMLDocument.Create;
                        //XMLDoc := LoadXMLDocument(FileName);
-            LoadXMLDocument(FileName, XMLDoc);
+                       LoadXMLDocument(FileName, XMLDoc);
                        try
                                XMLNode := XMLDoc.DocumentElement;
 
@@ -3083,9 +3194,9 @@ begin
                                                                s := Trim(HistoryNode.Attributes['url']);
                                                                if s <> '' then begin
                                                                        favItem := TFavoriteThreadItem.Create(
-                                                                               s, HistoryNode.Attributes[ 'title' ] );
+                                                                               s, MojuUtils.UnSanitize(HistoryNode.Attributes[ 'title' ]) );
                                                                        if not AddHistory( favItem ) then
-                                       favItem.Free;
+                                                                               favItem.Free;
                                                                end;
                                                        //end;
                                                end;
@@ -3097,6 +3208,10 @@ begin
                except
                end;
        end;
+{$IFDEF DEBUG}
+       rt := GetTickCount - st;
+       Writeln('Runtime(Load Histroy) : ' + IntToStr(rt) + ' ms');
+{$ENDIF}
 
 end;
 
@@ -3344,7 +3459,6 @@ begin
        end else begin
                if Item <> FActiveList then begin
                        ActiveListColumnSave;
-
                        if (Item is TBBS) or (Item is TCategory) then begin
                                ListView.Columns.Clear;
                                SetActiveList( Item );
@@ -3358,6 +3472,7 @@ begin
                                                Screen.Cursor := crDefault;
                                        end;
                                end;
+                               Sort.SetSortDate(Now());
                                SetActiveList( Item );
                        end;
                end;
@@ -3566,7 +3681,6 @@ begin
        FTabHintIndex := -1;
        for i := 0 to BrowserTab.Tabs.Count - 1 do begin
                if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
-                       BrowserTab.Tabs.BeginUpdate;
                        try
                                if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
                                        doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
@@ -3582,15 +3696,25 @@ begin
                                if j <> -1 then
                                        FBrowsers.Move(j, BROWSER_COUNT - 1);
                        end;
-                       TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
-                       BrowserTab.Tabs.Delete(i);
-                       if idx > i then begin
-                               BrowserTab.TabIndex := idx - 1;
-                       end else begin
-                               if BrowserTab.Tabs.Count -1 >= idx then
-                                       BrowserTab.TabIndex := idx
-                               else
-                                       BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
+                       BrowserTab.Tabs.BeginUpdate;
+                       try
+                               TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
+                               if ( BrowserTab.Tabs.Count - 1 = i ) and
+                                       ( BrowserTab.TabRect(i).Left
+                                               <= BrowserTab.DisplayRect.Left ) then begin
+                                       BrowserTab.ScrollTabs(-1);
+                               end;
+                               BrowserTab.Tabs.Delete(i);
+                               if idx > i then begin
+                                       BrowserTab.TabIndex := idx - 1;
+                               end else begin
+                                       if BrowserTab.Tabs.Count -1 >= idx then
+                                               BrowserTab.TabIndex := idx
+                                       else
+                                               BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
+                               end;
+                       finally
+                               BrowserTab.Tabs.EndUpdate;
                        end;
                        if BrowserTab.Tabs.Count = 0 then begin
                                BrowserNullTab.Thread := nil;
@@ -3610,7 +3734,6 @@ begin
                                TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
                                FBrowsers.Move(BROWSER_COUNT - 1, 0);
                        end;
-                       BrowserTab.Tabs.EndUpdate;
                        if( FActiveContent = nil) then
                                BrowserTab.OnChange(nil);
                        Exit;
@@ -3626,7 +3749,6 @@ begin
        FTabHintIndex := -1;
        for i := 0 to BrowserTab.Tabs.Count - 1 do begin
                if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
-                       BrowserTab.Tabs.BeginUpdate;
                        try
                                if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
                                        doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
@@ -3643,15 +3765,25 @@ begin
                                if j <> -1 then
                                        FBrowsers.Move(j, BROWSER_COUNT - 1);
                        end;
-                       TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
-                       BrowserTab.Tabs.Delete(i);
-                       if idx > i then begin
-                               BrowserTab.TabIndex := idx - 1;
-                       end else begin
-                               if BrowserTab.Tabs.Count -1 >= idx then
-                                       BrowserTab.TabIndex := idx
-                               else
-                                       BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
+                       BrowserTab.Tabs.BeginUpdate;
+                       try
+                               TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
+                               if ( BrowserTab.Tabs.Count - 1 = i ) and
+                                       ( BrowserTab.TabRect(i).Left
+                                               <= BrowserTab.DisplayRect.Left ) then begin
+                                       BrowserTab.ScrollTabs(-1);
+                               end;
+                               BrowserTab.Tabs.Delete(i);
+                               if idx > i then begin
+                                       BrowserTab.TabIndex := idx - 1;
+                               end else begin
+                                       if BrowserTab.Tabs.Count -1 >= idx then
+                                               BrowserTab.TabIndex := idx
+                                       else
+                                               BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
+                               end;
+                       finally
+                               BrowserTab.Tabs.EndUpdate;
                        end;
                        if(BrowserTab.TabIndex <> -1) and
                                ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
@@ -3669,7 +3801,6 @@ begin
                                FBrowsers.Move(BROWSER_COUNT - 1, 0);
                        end;
 
-                       BrowserTab.Tabs.EndUpdate;
                        if( FActiveContent = nil) then
                                BrowserTab.OnChange(nil);
                        Exit;
@@ -4008,54 +4139,51 @@ end;
 
 procedure TGikoForm.SetBrowserTabState;
 var
-//     i: Integer;
        CoolBand: TCoolBand;
 begin
        BrowserBottomPanel.AutoSize := False;
        if GikoSys.Setting.BrowserTabVisible then begin
-               if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
-                       BrowserTab.Style := tsTabs;
-                       if GikoSys.Setting.BrowserTabPosition = gtpTop then
-                               BrowserTab.TabPosition := tpTop
-                       else
-                               BrowserTab.TabPosition := tpBottom;
-               end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
-                       BrowserTab.TabPosition := tpTop;
-                       BrowserTab.Style := tsButtons;
-               end else begin
-                       BrowserTab.TabPosition := tpTop;
-                       BrowserTab.Style := tsFlatButtons
-               end;
-
-               if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
-                       BrowserTab.Parent := BrowserTabToolBar;
-                       BrowserBottomPanel.Hide;
-                       CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
-                       if CoolBand <> nil then
-                               CoolBand.Visible := True;
-//                     BrowserTab.Parent := BrowserTopPanel;
-//                     BrowserTab.Parent := BrowserCoolBar;
-//                     BrowserTab.Top := 26;
-//                     BrowserTopPanel.Height := 44;
+               BrowserTab.Hide;
+               BrowserTab.Tabs.BeginUpdate;
+               try
+                       if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
+                               BrowserTab.Style := tsTabs;
+                               if GikoSys.Setting.BrowserTabPosition = gtpTop then
+                                       BrowserTab.TabPosition := tpTop
+                               else
+                                       BrowserTab.TabPosition := tpBottom;
+                       end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
+                               BrowserTab.TabPosition := tpTop;
+                               BrowserTab.Style := tsButtons;
+                       end else begin
+                               BrowserTab.TabPosition := tpTop;
+                               BrowserTab.Style := tsFlatButtons
+                       end;
 
-               end else begin
-                       BrowserTab.Parent := BrowserBottomPanel;
-                       BrowserTab.Top := 0;
-                       BrowserTab.Left := 0;
-                       BrowserBottomPanel.Show;
-                       CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
-                       if CoolBand <> nil then
-                               CoolBand.Visible := False;
-//                     BrowserTopPanel.Height := 26;
-               end;
-               BrowserTab.Show;
+                       if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
+                               BrowserTab.Parent := BrowserTabToolBar;
+                               BrowserBottomPanel.Hide;
+                               CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
+                               if CoolBand <> nil then
+                                       CoolBand.Visible := True;
+                       end else begin
+                               BrowserTab.Parent := BrowserBottomPanel;
+                               BrowserTab.Top := 0;
+                               BrowserTab.Left := 0;
+                               BrowserBottomPanel.Show;
+                               CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
+                               if CoolBand <> nil then
+                                       CoolBand.Visible := False;
+                       end;
+               finally
+                       BrowserTab.Tabs.EndUpdate;
+                       BrowserTab.Show;
+               end;
        end else begin
                CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
                if CoolBand <> nil then
                        CoolBand.Visible := False;
                BrowserBottomPanel.Visible := False;
-//             BrowserTab.Visible := False;
-//             BrowserTopPanel.Height := 26;
                GikoDM.AllTabCloseAction.Execute;
        end;
 end;
@@ -4125,7 +4253,6 @@ var
        doc                                     : Variant;
        threadItem      : TThreadItem;
 begin
-//     AddMessageList('DocumentComplete', nil, gmiWhat);
        if TObject(Sender) is TWebBrowser then begin
                BrowserRecord := nil;
                if TWebBrowser(Sender) <> Browser then begin
@@ -4157,23 +4284,24 @@ begin
                                        FEvent := nil;
                                end;
                        end;
-                       
+
                end;
 
                if (BrowserRecord <> nil) and
                         Assigned( BrowserRecord.Thread ) then begin
                        threadItem := BrowserRecord.Thread;
 
-                       if (BrowserRecord <> nil) and (Length( BrowserRecord.Movement ) > 0) then begin
+                       if (threadItem.JumpAddress > 0) then begin
                                if threadItem.UnRead then begin
                                        threadItem.UnRead := False;
                                        TreeView.Refresh;
-                                       ListView.Refresh;
+                                       RefreshListView(threadItem);
                                end;
                                // \83X\83N\83\8d\81[\83\8b\90æ\82ª\8eæ\93¾\8aO\82Ì\83\8c\83X\82Ì\8e\9e\82Í\8fI\92[\82É\88Ú\93®
-                               if (StrToIntDef(BrowserRecord.Movement, 0) <= BrowserRecord.Thread.Count) then begin
-                                       BrowserRecord.Move(BrowserRecord.Movement);
-                                       BrowserRecord.Movement := '';
+                               //if (StrToIntDef(BrowserRecord.Movement, 0) <= BrowserRecord.Thread.Count) then begin
+                               if (threadItem.JumpAddress <= BrowserRecord.Thread.Count) then begin
+                                       BrowserRecord.Move(IntToStr(threadItem.JumpAddress));
+                                       threadItem.JumpAddress := 0;
                                end else begin
                                        BrowserRecord.Move(IntToStr(BrowserRecord.Thread.Count));
                                end;
@@ -4182,7 +4310,7 @@ begin
                                threadItem.UnRead := False;
                                TreeView.Refresh;
                                BrowserRecord.Move('new');
-                               ListView.Refresh;
+                               RefreshListView(threadItem);
                        end else if threadItem.ScrollTop <> 0 then begin
                                try
                                        doc := Idispatch( OleVariant( BrowserRecord.Browser.ControlInterface ).Document ) as IHTMLDocument2;
@@ -4194,6 +4322,7 @@ begin
                        end;
                end;
        end;
+       LockWindowUpdate(0);
 end;
 
 procedure TGikoForm.RoundNamePopupMenuPopup(Sender: TObject);
@@ -4378,6 +4507,9 @@ begin
 end;
 
 procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject );
+const
+       MsgAdd : String = '\8aù\82É\82¨\8bC\82É\93ü\82è\82É\93o\98^\82³\82ê\82Ä\82¢\82Ü\82·\81B\82»\82ê\82Å\82à\92Ç\89Á\82µ\82Ü\82·\82©\81H';
+       TitleAdd: String =  '\82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á';
 var
        Dlg                     : TFavoriteAddDialog;
        ItemURL : string;
@@ -4397,7 +4529,7 @@ begin
                        Data := Node.Data;
                        if TObject( Data ) is TFavoriteBoardItem then begin
                                if ItemURL = TFavoriteBoardItem( Data ).URL then begin
-                                       if Application.MessageBox( '\8aù\82É\82¨\8bC\82É\93ü\82è\82É\93o\98^\82³\82ê\82Ä\82¢\82Ü\82·\81B\82»\82ê\82Å\82à\92Ç\89Á\82µ\82Ü\82·\82©\81H', '\82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á', MB_YESNO ) = IDNO then
+                                       if Application.MessageBox(PChar(MsgAdd) , PChar(TitleAdd), MB_YESNO ) = IDNO then
                                                Exit;
                                        Break;
                                end;
@@ -4417,7 +4549,7 @@ begin
                        Data := Node.Data;
                        if TObject( Data ) is TFavoriteThreadItem then begin
                                if ItemURL = TFavoriteThreadItem( Data ).URL then begin
-                                       if Application.MessageBox( '\8aù\82É\82¨\8bC\82É\93ü\82è\82É\93o\98^\82³\82ê\82Ä\82¢\82Ü\82·\81B\82»\82ê\82Å\82à\92Ç\89Á\82µ\82Ü\82·\82©\81H', '\82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á', MB_YESNO ) = IDNO then
+                                       if Application.MessageBox( PChar(MsgAdd), PChar(TitleAdd), MB_YESNO ) = IDNO then
                                                Exit;
                                        Break;
                                end;
@@ -4502,6 +4634,47 @@ begin
        TopPanel.Height := Max(MainCoolBar.Height, AnimePanel.Height);
 
 end;
+//! \8ew\92è\82³\82ê\82½\83X\83\8c\83b\83h\82ð\8aJ\82­(\83\8d\83O\82ª\96³\82¢\82Æ\82« or \8ew\92èJUMP\82Ü\82Å\91«\82è\82È\82¢\82Æ\82«\82ÍDL\82·\82é)
+procedure TGikoForm.OpenThreadItem(Thread: TThreadItem; URL: String);
+var
+       stRes, edRes : Int64;
+       browserRec : TBrowserRecord;
+       threadNumber : String;
+       doc : Variant;
+begin
+       stRes := 0;
+       edRes := 0;
+       Thread.JumpAddress := 0;
+       // \83^\83u\82ð\90\90¬
+       browserRec := InsertBrowserTab(Thread);
+       if (browserRec <> nil) then begin
+               // JUMP\82·\82×\82«\83\8c\83X\94Ô\8d\86\82ª\82 \82é\82©\83`\83F\83b\83N\82·\82é
+               threadNumber := ChangeFileExt(Thread.FileName, '');
+               GikoSys.GetPopupResNumber( URL, stRes, edRes );
+               // \83X\83\8c\82Ì\94Ô\8d\86\82ð\83\8c\83X\94Ô\82Æ\8cë\82Á\82Ä\94F\8e¯\82µ\82Ä\82¢\82é\82Ì\82ð\83N\83\8a\83A
+               if (StrToInt64(threadNumber) = stRes) then begin
+                       if not (AnsiEndsText(threadNumber + '/' + threadNumber, URL))
+                               and (Pos('&st=' + threadNumber , URL) = 0) then begin
+                               stRes := 0;
+                       end;
+               end;
+               if ( stRes > 0 ) then begin
+                       Thread.JumpAddress := stRes;
+               end;
+               // \83\8d\83O\82ð\8e\9d\82Á\82Ä\82¢\82È\82¢\82© JUMP\82·\82×\82«\83\8c\83X\94Ô\8d\86\82Ü\82Å\8eæ\93¾\82µ\82Ä\82¢\82È\82¢\82Æ\82«\82ÍDL\82·\82é
+               if (not Thread.IsLogFile) or (stRes > Thread.Count) then begin
+                       DownloadContent(Thread);
+               end else if (not browserRec.Repaint) and (stRes > 0) then begin
+                       browserRec.Move(IntToStr(stRes));
+                       Thread.JumpAddress := 0;
+                       try
+                               doc := Idispatch( OleVariant( browserRec.Browser.ControlInterface ).Document ) as IHTMLDocument2;
+                               Thread.ScrollTop := doc.Body.ScrollTop;
+                       except
+                       end;
+               end;
+       end;
+end;
 
 procedure TGikoForm.MoveToURL(const inURL: string);
 var
@@ -4514,13 +4687,8 @@ var
        i, bi                                   : Integer;
        boardURL                        : string;
        tmpThread                       : TThreadItem;
-//     category                        : TCategory;
-//     categoryNode    : TTreeNode;
-//     boardNode                       : TTreeNode;
        shiftDown                       : Boolean;
        ctrlDown                        : Boolean;
-       stRes, edRes    : Int64;
-       browserRec              : TBrowserRecord;
 begin
 
        GikoSys.ParseURI( inURL, protocol, host, path, document, port, bookmark );
@@ -4576,30 +4744,11 @@ begin
                                                                        if TBoard(ActiveList) = Board then
                                                                                ListView.Items.Count := ListView.Items.Count + 1;
                                                                end;
-                                                               GikoSys.GetPopupResNumber( inURL, stRes, edRes );
-                                                               browserRec := InsertBrowserTab( ThreadItem );
-                                                               if (browserRec <> nil) and (stRes > 0) then
-                                                                       browserRec.Movement := IntToStr( stRes );
-                                                               DownloadContent( ThreadItem );
-                                                               Exit;
                                                        end else begin
                                                                tmpThread.Free;
-                                                               GikoSys.GetPopupResNumber( inURL, stRes, edRes );
-                                                               browserRec := InsertBrowserTab( ThreadItem );
-                                                               if ThreadItem.IsLogFile then begin
-                                                                       if (browserRec <> nil) and (stRes > 0) then begin
-                                                                               browserRec.Movement := IntToStr( stRes );
-                                                                               if (stRes > ThreadItem.Count) then begin
-                                                                                       DownloadContent( ThreadItem );
-                                                                               end;
-                                                                       end;
-                                                               end else begin
-                                                                       if (browserRec <> nil) and (stRes > 0) then
-                                                                               browserRec.Movement := IntToStr( stRes );
-                                                                       DownloadContent( ThreadItem );
-                                                               end;
-                                                               Exit;
                                                        end;
+                                                       OpenThreadItem(ThreadItem, inURL);
+                                                       Exit;
                                                end;
                                        end;
 
@@ -4626,15 +4775,6 @@ begin
        if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin
                boardURL := GikoSys.Get2chThreadURL2BoardURL( inURL );
                Board := BBSsFindBoardFromURL( boardURL );
-               //if Board = nil then
-               //      Board := BBSsFindBoardFromBBSID( BBSID );
-               { \82±\82Ì\95\94\95ª\82àBBS\82\93FindBoardFromURL\82É\8e\9d\82½\82¹\82½\81@20050523
-               if Board = nil then begin
-                       // \81¦\8dì\82Á\82Ä\82à\92Ç\89Á\82·\82é\82Æ\82±\82ë\82ª\96³\82¢\82Ì\82Å\8c\83\82µ\82­\95Û\97¯
-                       //\81@\89ß\8b\8e\83\8d\83O\91q\8cÉ\82©\82ç\81A\83_\83E\83\\82µ\82½\83X\83\8c\82ª\94­\8c©\82Å\82«\82È\82¢\82Ì\82Å\82±\82±\82Å\92T\82·\82æ\82¤\82É\82·\82é (2004/01/22)
-                       Board := BBSs[ 0 ].FindBBSID( BBSID );
-               end;
-               }
                if Board = nil then begin
                         // \93ü\82é\82×\82«\94Â\82ª\8c©\82Â\82©\82ç\82È\82©\82Á\82½\82Ì\82Å\81A\95\81\92Ê\82Ì\83u\83\89\83E\83U\82Å\8aJ\82­
                         GikoSys.OpenBrowser(inURL, gbtUserApp);
@@ -4659,55 +4799,26 @@ begin
                if ThreadItem = nil then begin
                        ThreadItem := Board.FindThreadFromFileName( BBSKey + '.dat' );
                end;
-               if ThreadItem = nil then begin
-                       //shift -> \90Ý\92è\83u\83\89\83E\83U\81i\96³\82¯\82ê\82ÎIE\81j
-                       //ctrl  -> IE
-                       {shiftDown      := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
-                       ctrlDown        := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
-                       if shiftDown then
-                               GikoSys.OpenBrowser(URL1, gbtUserApp)
-                       else if ctrlDown then
-                               GikoSys.OpenBrowser(URL1, gbtIE)
-                       else begin
-                       }
-                       ThreadItem := TThreadItem.Create( nil, Board, URL );
-                       ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
-                       if AnsiPos(Host, Board.URL) = 0 then
-                               ThreadItem.DownloadHost := Host
-                       else
-                               ThreadItem.DownloadHost := '';
-                       Board.Insert(0, ThreadItem);
-                       if ActiveList is TBoard then begin
-                               if TBoard(ActiveList) = Board then
-                                       ListView.Items.Count := ListView.Items.Count + 1;
-                       end;
-                       GikoSys.GetPopupResNumber( inURL, stRes, edRes );
-                       browserRec := InsertBrowserTab(ThreadItem);
-                       if (browserRec <> nil) and (stRes > 0) then
-                               browserRec.Movement := IntToStr( stRes );
-                       DownloadContent(ThreadItem);
-                       {end;}
-               end else begin
-                       if ThreadItem.IsLogFile then begin
-                               GikoSys.GetPopupResNumber( inURL, stRes, edRes );
-                               browserRec := InsertBrowserTab(ThreadItem);
-                               if (browserRec <> nil) and (stRes > 0) then begin
-                                       browserRec.Movement := IntToStr( stRes );
-                                       if (stRes > ThreadItem.Count) then begin
-                       DownloadContent(ThreadItem);
-                                       end;
+               try
+                       // \83X\83\8c\83b\83h\83A\83C\83e\83\80\82ª\82È\82¢\82È\82ç\90\90¬\82·\82é\81B
+                       if ThreadItem = nil then begin
+                               ThreadItem := TThreadItem.Create( nil, Board, URL );
+                               ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
+                               Board.Insert(0, ThreadItem);
+                               if ActiveList is TBoard then begin
+                                       if TBoard(ActiveList) = Board then
+                                               ListView.Items.Count := ListView.Items.Count + 1;
                                end;
-                       end else begin
+                       end;
+                       // \83\8d\83O\82È\82µ\83X\83\8c\83b\83h\82Ì\82Æ\82«\82Í\81A\83z\83X\83g\96¼\82Ì\83`\83F\83b\83N\82ð\82·\82é
+                       if (not ThreadItem.IsLogFile) then begin
                                if AnsiPos(Host, Board.URL) = 0 then
                                        ThreadItem.DownloadHost := Host
                                else
                                        ThreadItem.DownloadHost := '';
-                               GikoSys.GetPopupResNumber( inURL, stRes, edRes );
-                               browserRec := InsertBrowserTab(ThreadItem);
-                               if (browserRec <> nil) and (stRes > 0) then
-                                       browserRec.Movement := IntToStr( stRes );
-                               DownloadContent(ThreadItem);
                        end;
+                       OpenThreadItem(ThreadItem, inURL);
+               except
                end;
        end else begin
                Board := BBSsFindBoardFromURL( inURL );
@@ -4717,7 +4828,7 @@ begin
                        if FActiveBBS <> Board.ParentCategory.ParenTBBS then
                                ShowBBSTree( Board.ParentCategory.ParenTBBS );
                        SelectTreeNode( Board, True );
-       end;
+               end;
        end;
 end;
 
@@ -5017,7 +5128,7 @@ begin
 
                        ThreadItem := GetActiveContent;
                        if ThreadItem <> nil then begin
-                               Num := StrToInt(s);
+                               Num := StrToInt64(s);
                                FHint.PopupType := gptThread;
                                HTMLCreater.SetResPopupText(FHint, ThreadItem, Num, Num, False, False);
                                if FHint.ResCount <> 0 then
@@ -5742,27 +5853,16 @@ end;
 
 procedure TGikoForm.SetSelectWord( const text : string );
 begin
+       // \83X\83\8c\88ê\97\97\82Ì\94Í\88Í\8ew\92è\82ð\89ð\8f\9c
+       ClearThreadRengeAction;
 
        if Length( text ) = 0 then
        begin
                GikoDM.AllItemAction.Checked := True;
-               GikoDM.LogItemAction.Checked := False;
-               GikoDM.NewItemAction.Checked := False;
-       end else begin
-               // \83`\83\89\82Â\82­\82Æ\8c\99\82¾\82©\82ç\81A\88ê\89\9e\89\9f\82µ\82Ä\82 \82é\82Æ\82«\82¾\82¯\8f\88\97\9d\82·\82é
-               if GikoDM.AllItemAction.Checked then
-                       GikoDM.AllItemAction.Checked := False;
-               if GikoDM.LogItemAction.Checked then
-                       GikoDM.LogItemAction.Checked := False;
-               if GikoDM.NewItemAction.Checked then
-                       GikoDM.NewItemaction.Checked := False;
-       end;
-
-       if Length( text ) = 0 then
                SetListViewType( gvtAll )
-       else
+       end else begin
                SetListViewType( gvtUser, text, false );
-
+       end;
 end;
 
 procedure TGikoForm.SelectComboBoxChange(Sender: TObject);
@@ -5798,7 +5898,9 @@ begin
                        end else
                                Str := SelectComboBox.Text + Str;
 
-                       SetSelectWord(Str);
+                       if (Length(Str) > 0) then begin
+                               SetSelectWord(Str);
+                       end;
                end;
        end else if Length( SelectComboBox.Text ) = 0 then
        begin
@@ -5807,16 +5909,27 @@ begin
                 * \81i\82±\82±\82Å\82Í\89½\82à\82µ\82È\82¢\81j
                 *}
        end else begin
-               // \83`\83\89\82Â\82­\82Æ\8c\99\82¾\82©\82ç\81A\88ê\89\9e\89\9f\82µ\82Ä\82 \82é\82Æ\82«\82¾\82¯\8f\88\97\9d\82·\82é
-               if GikoDM.AllItemAction.Checked then
-                       GikoDM.AllItemAction.Checked := False;
-               if GikoDM.LogItemAction.Checked then
-                       GikoDM.LogItemAction.Checked := False;
-               if GikoDM.NewItemAction.Checked then
-                       GikoDM.NewItemaction.Checked := False;
+        // \83X\83\8c\88ê\97\97\82Ì\94Í\88Í\8ew\92è\82ð\89ð\8f\9c
+               ClearThreadRengeAction;
        end;
 
 end;
+//! \83X\83\8c\83b\83h\88ê\97\97\82Ì\95\\8e¦\94Í\88Í\90Ý\92è\83`\83F\83b\83N\83N\83\8a\83A
+procedure TGikoForm.ClearThreadRengeAction;
+begin
+       // \83`\83\89\82Â\82­\82Æ\8c\99\82¾\82©\82ç\81A\88ê\89\9e\89\9f\82µ\82Ä\82 \82é\82Æ\82«\82¾\82¯\8f\88\97\9d\82·\82é
+       if GikoDM.AllItemAction.Checked then
+               GikoDM.AllItemAction.Checked := False;
+       if GikoDM.LogItemAction.Checked then
+               GikoDM.LogItemAction.Checked := False;
+       if GikoDM.NewItemAction.Checked then
+               GikoDM.NewItemaction.Checked := False;
+       if GikoDM.LiveItemAction.Checked then
+               GikoDM.LiveItemAction.Checked := False;
+       if GikoDM.ArchiveItemAction.Checked then
+               GikoDM.ArchiveItemAction.Checked := False;
+
+end;
 
 procedure TGikoForm.SelectComboBoxExit(Sender: TObject);
 begin
@@ -6154,26 +6267,29 @@ begin
                FavoriteTreeNameURLCopyPopupMenu.Visible := False;
                FavoriteTreeReloadPopupMenu.Visible := False;
                FavoriteTreeLogDeletePopupMenu.Visible := False;
+               FavoriteTreeItemNameCopyPopupMenu.Visible := False;
        end else if FClickNode.IsFirstNode then begin
                FavoriteTreeBrowseFolderPopupMenu.Visible := True;
                FavoriteTreeDeletePopupMenu.Visible := False;
                FavoriteTreeRenamePopupMenu.Visible := False;
                FavoriteTreeNewFolderPopupMenu.Visible := True;
                FavoriteTreeURLCopyPopupMenu.Visible := False;
-               FavoriteTreeNameCopyPopupMenu.Visible := True;
+               FavoriteTreeNameCopyPopupMenu.Visible := False;
                FavoriteTreeNameURLCopyPopupMenu.Visible := False;
                FavoriteTreeReloadPopupMenu.Visible := False;
                FavoriteTreeLogDeletePopupMenu.Visible := False;
+               FavoriteTreeItemNameCopyPopupMenu.Visible := True;
        end else if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
                FavoriteTreeBrowseFolderPopupMenu.Visible := True;
                FavoriteTreeDeletePopupMenu.Visible := True;
                FavoriteTreeRenamePopupMenu.Visible := False;
                FavoriteTreeNewFolderPopupMenu.Visible := True;
                FavoriteTreeURLCopyPopupMenu.Visible := False;
-               FavoriteTreeNameCopyPopupMenu.Visible := True;
+               FavoriteTreeNameCopyPopupMenu.Visible := False;
                FavoriteTreeNameURLCopyPopupMenu.Visible := False;
                FavoriteTreeReloadPopupMenu.Visible := False;
                FavoriteTreeLogDeletePopupMenu.Visible := False;
+               FavoriteTreeItemNameCopyPopupMenu.Visible := True;
        end else if TObject(FClickNode.Data) is TFavoriteFolder then begin
                FavoriteTreeBrowseFolderPopupMenu.Visible := True;
                FavoriteTreeDeletePopupMenu.Visible := True;
@@ -6184,6 +6300,7 @@ begin
                FavoriteTreeNameURLCopyPopupMenu.Visible := False;
                FavoriteTreeReloadPopupMenu.Visible := False;
                FavoriteTreeLogDeletePopupMenu.Visible := False;
+               FavoriteTreeItemNameCopyPopupMenu.Visible := True;
        end else if TObject(FClickNode.Data) is TFavoriteThreadItem then begin
                FavoriteTreeBrowseFolderPopupMenu.Visible := False;
                FavoriteTreeDeletePopupMenu.Visible := True;
@@ -6194,6 +6311,7 @@ begin
                FavoriteTreeNameURLCopyPopupMenu.Visible := True;
                FavoriteTreeReloadPopupMenu.Visible := True;
                FavoriteTreeLogDeletePopupMenu.Visible := True;
+               FavoriteTreeItemNameCopyPopupMenu.Visible := True;
        end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
                FavoriteTreeBrowseFolderPopupMenu.Visible := False;
                FavoriteTreeDeletePopupMenu.Visible := True;
@@ -6204,6 +6322,7 @@ begin
                FavoriteTreeNameURLCopyPopupMenu.Visible := True;
                FavoriteTreeReloadPopupMenu.Visible := True;
                FavoriteTreeLogDeletePopupMenu.Visible := False;
+               FavoriteTreeItemNameCopyPopupMenu.Visible := True;
        end else begin
                FavoriteTreeBrowseFolderPopupMenu.Visible := False;
                FavoriteTreeDeletePopupMenu.Visible := False;
@@ -6214,6 +6333,7 @@ begin
                FavoriteTreeNameURLCopyPopupMenu.Visible := False;
                FavoriteTreeReloadPopupMenu.Visible := False;
                FavoriteTreeLogDeletePopupMenu.Visible := False;
+               FavoriteTreeItemNameCopyPopupMenu.Visible := False;
        end;
 
 end;
@@ -6620,6 +6740,7 @@ begin
                                Screen.Cursor := crDefault;
                        end;
                end;
+               Sort.SetSortDate(Now());
                SetActiveList(Node.data);
        end;
 
@@ -6694,7 +6815,8 @@ begin
                                (FavoriteTreeView.Selected = FavoriteTreeView.GetNodeAt(X, Y)) then begin
                                //\83}\83E\83X\82ªnode\82Ì\8fã\82É\82¢\82é\82©
                                rect := FavoriteTreeView.Selected.DisplayRect(true);
-                               if ((rect.Left <= X) and (rect.Right >= X)) and
+                               // \83A\83C\83R\83\93\95ª\8d\82É\82¸\82ç\82·
+                               if ((rect.Left - FavoriteTreeView.Indent <= X) and (rect.Right >= X)) and
                                        ((rect.Bottom >= Y) and (rect.Top <= Y)) then begin
                                        if ssDouble in Shift then begin
                                                FClickNode := FavoriteTreeView.Selected;
@@ -7587,74 +7709,6 @@ begin
        MsgBox(Handle, s, '\8f\88\97\9d\82³\82ê\82È\82©\82Á\82½\97á\8aO', MB_OK or MB_ICONSTOP);
 end;
 // *************************************************************************
-//! \83A\83N\83V\83\87\83\93\82Ì\83`\83F\83b\83N\8fó\91Ô\82Ì\8f\89\8aú\89» Form\82ÌCreate\82Å\8cÄ\82Ñ\8fo\82µ\82Ä\82à\94½\89f\82µ\82È\82¢
-// *************************************************************************
-procedure TGikoForm.InitActionChecked();
-begin
-       //\83\8d\83O\83C\83\93\8fó\91Ô\82ð\8dÄ\90Ý\92è
-       GikoDM.LoginAction.Checked := GikoDM.LoginAction.Checked;
-       //\83~\83\85\81[\83g\82Ì\8fó\91Ô\82ð\90Ý\92è
-       GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
-       //\89æ\96Ê\82Ì\95ª\8a\84\82Ì\8fó\91Ô\82ð\8dÄ\90Ý\92è
-       GikoDM.ArrangeAction.Checked := GikoDM.ArrangeAction.Checked;
-
-       //\83X\83\8c\91S\95\94\95\\8e¦\83{\83^\83\93\82ð\89\9f\82³\82ê\82½\8fó\91Ô\82É\82·\82é
-       GikoDM.AllItemAction.Checked := True;
-       GikoDM.AllResAction.Checked := True;
-
-       // \83\8c\83X\95\\8e¦\94Í\88Í
-       FResRangeMenuSelect := GikoSys.ResRange;
-       case GikoSys.ResRange of
-       Ord( grrAll ):
-               begin
-                       GikoDM.AllResAction.Execute;
-               end;
-       Ord( grrSelect ):
-               begin
-                       SelectComboBox.Text := SelectComboBox.Items[ 1 ];
-                       GikoDM.SelectResAction.Checked := True;
-               end;
-       else
-               case FResRangeMenuSelect of
-               Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked        := True;
-               Ord( grrNew ):  GikoDM.OnlyNewResAction.Checked := True;
-               100:                    GikoDM.OnlyAHundredResAction.Checked            := True;
-               end;
-       end;
-
-       // \83X\83\8c\83b\83h\88ê\97\97\95\\8e¦\94Í\88Í
-       case GikoSys.Setting.ThreadRange of
-       gtrAll:
-               begin
-                       GikoDM.AllItemAction.Checked := True;
-                       ViewType := gvtAll;
-               end;
-       gtrLog:
-               begin
-                       GikoDM.LogItemAction.Checked := True;
-                       ViewType := gvtLog;
-               end;
-       gtrNew:
-               begin
-                       GikoDM.NewItemAction.Checked := True;
-                       ViewType := gvtNew;
-               end;
-       end;
-       if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
-               GikoDM.BrowserTabTopAction.Checked := True;
-       end else begin
-               GikoDM.BrowserTabBottomAction.Checked := True;
-       end;
-
-       if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
-               GikoDM.BrowserTabTabStyleAction.Checked := True;
-       end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
-               GikoDM.BrowserTabButtonStyleAction.Checked := True;
-       end else begin
-               GikoDM.BrowserTabFlatStyleAction.Checked := True;
-       end;
-end;
-// *************************************************************************
 //! \83_\83E\83\93\83\8d\81[\83h\83R\83\93\83g\83\8d\81[\83\8b\83X\83\8c\83b\83h\82Ì\90\90¬
 // *************************************************************************
 procedure TGikoForm.CreateControlThread();
@@ -7688,6 +7742,7 @@ begin
                TOleControl(newBrowser).Align := alNone;
                TOleControl(newBrowser).Left    := 0;
                TOleControl(newBrowser).Top     := 0;
+               newBrowser.RegisterAsDropTarget := False;
                newBrowser.OnDocumentComplete   := BrowserDocumentComplete;
                newBrowser.OnBeforeNavigate2    := BrowserBeforeNavigate2;
                newBrowser.OnEnter                              := BrowserEnter;
@@ -7775,9 +7830,10 @@ begin
                                (TreeView.Selected = TreeView.GetNodeAt(X, Y)) then begin
                                //\83}\83E\83X\82ªnode\82Ì\8fã\82É\82¢\82é\82©
                                rect := TreeView.Selected.DisplayRect(true);
-                               if ((rect.Left <= X) and (rect.Right >= X)) and
+                               // \83A\83C\83R\83\93\95ª\82¾\82¯\8d\82É\82¸\82ç\82·
+                               if ((rect.Left - TreeView.Indent <= X) and (rect.Right >= X)) and
                                        ((rect.Bottom >= Y) and (rect.Top <= Y)) then begin
-                    // \83N\83\8a\83b\83N\82Æ\83_\83u\83\8b\83N\83\8a\83b\83N\82ð\83R\83R\82Å\94»\92è
+                                       // \83N\83\8a\83b\83N\82Æ\83_\83u\83\8b\83N\83\8a\83b\83N\82ð\83R\83R\82Å\94»\92è
                                        if ssDouble in Shift then begin
                                                TreeDoubleClick( TreeView.Selected );
                                        end else begin
@@ -7788,6 +7844,58 @@ begin
                end;
        end;
 end;
+//! ActionList\82ÌGroupIndex\82Ì\95Û\91
+procedure TGikoForm.GetGroupIndex(ActionList: TActionList);
+var
+       i: Integer;
+begin
+       if ActionList <> nil then begin
+               SetLength(FActionListGroupIndexes, ActionList.ActionCount);
+
+               for i := 0 to ActionList.ActionCount - 1 do begin
+                       try
+                               FActionListGroupIndexes[i] :=
+                                       TCustomAction(ActionList.Actions[i]).GroupIndex;
+                               TCustomAction(ActionList.Actions[i]).GroupIndex
+                                       := 0;
+                       except
+                               ;//Cast\82Å\82«\82È\82¢\82Æ\82«\91Î\8dô
+                       end;
+               end;
+
+       end;
+end;
+//! ActionList\82ÌGroupIndex\82Ì\90Ý\92è
+procedure TGikoForm.SetGroupIndex(ActionList: TActionList);
+var
+       i: Integer;
+begin
+       if ActionList <> nil then begin
+               if Length( FActionListGroupIndexes ) = ActionList.ActionCount then begin
+                       for i := 0 to ActionList.ActionCount - 1 do begin
+                               try
+                                       TCustomAction(ActionList.Actions[i]).GroupIndex
+                                               := FActionListGroupIndexes[i];
+                               except
+                                       ;//Cast\82Å\82«\82È\82¢\82Æ\82«\91Î\8dô
+                               end;
+                       end;
+               end;
+       end;
+end;
+//! \82±\82Ì\83\8c\83X\82ÌURL\8eæ\93¾
+procedure TGikoForm.GetResURLMenuClick(Sender: TObject);
+begin
+;
+end;
+//! ListView\81i\83X\83\8c\83b\83h\88ê\97\97\81j\82ð\8dX\90V\82·\82é
+procedure TGikoForm.RefreshListView(Thread: TThreadItem);
+begin
+       //Thread\82Ì\94Â\82Æ\95\\8e¦\82µ\82Ä\82¢\82é\94Â\82ª\93¯\82\82È\82ç\95`\89æ\82ð\8dX\90V\82·\82é
+       if (FActiveList is TBoard) and (TBoard(ActiveList) = Thread.ParentBoard) then begin
+               ListView.Refresh;
+       end;
+end;
 
 initialization
                                OleInitialize(nil);