OSDN Git Service

マウスジェスチャー-の不具合とレス番指定URLを踏んだときの処理用に
authorh677 <h677>
Tue, 21 Feb 2006 15:35:49 +0000 (15:35 +0000)
committerh677 <h677>
Tue, 21 Feb 2006 15:35:49 +0000 (15:35 +0000)
TThreadItemを拡張

BoardGroup.pas
BrowserRecord.pas
ExternalThreadItem.pas
Gesture.pas
Giko.dfm
Giko.pas

index c4f13f5..cfd0fc4 100644 (file)
@@ -233,7 +233,6 @@ type
        TThreadItem = class(TObject)
        private
                FContext: DWORD;                                        // \83v\83\89\83O\83C\83\93\82ª\8e©\97R\82É\90Ý\92è\82µ\82Ä\82¢\82¢\92l(\8eå\82É\83C\83\93\83X\83^\83\93\83X\82ª\93ü\82é)
-
                FNo: Integer;                                                   //\94Ô\8d\86
                FFileName: string;                              //\83X\83\8c\83b\83h\83t\83@\83C\83\8b\96¼
                FTitle: string;                                         //\83X\83\8c\83b\83h\83^\83C\83g\83\8b
@@ -246,7 +245,6 @@ type
                FSize: Integer;                                         //\83X\83\8c\83b\83h\83T\83C\83Y
                FRound: Boolean;                                        //\8f\84\89ñ\83t\83\89\83O
                FRoundName: string;                             //\8f\84\89ñ\96¼
-               //FRoundName: PChar;                            //\8f\84\89ñ\96¼
                FIsLogFile: Boolean;                    //\83\8d\83O\91\8dÝ\83t\83\89\83O
                FParentBoard: TBoard;                   //\90e\83{\81[\83h
                FKokomade: Integer;                             //\83R\83R\82Ü\82Å\93Ç\82ñ\82¾\94Ô\8d\86
@@ -256,14 +254,10 @@ type
                FScrollTop: Integer;                    //\83X\83N\83\8d\81[\83\8b\88Ê\92u
                FDownloadHost: string;          //\8d¡\82Ì\83z\83X\83g\82Æ\88á\82¤\8fê\8d\87\82Ì\83z\83X\83g
                FAgeSage: TGikoAgeSage;         //\83A\83C\83e\83\80\82Ì\8fã\82°\89º\82°
-//             FSPID: string;                                          //\8f\91\82«\8d\9e\82Ý\97pSPID
-
                FUpdate: Boolean;
                FExpand: Boolean;
                FURL                                    : string;                               // \82±\82Ì\83X\83\8c\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
-               //FBoardPlugIn  : TBoardPlugIn; // \82±\82Ì\83X\83\8c\82ð\83T\83|\81[\83g\82·\82é\83v\83\89\83O\83C\83\93
-               //FFilePath                     : string;                               // \82±\82Ì\83X\83\8c\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
-
+               FJumpAddress : Integer;         //\83\8c\83X\94Ô\8d\86\8ew\92èURL\82ð\93¥\82ñ\82¾\82Æ\82«\82É\8ew\92è\82³\82ê\82é\83\8c\83X\82Ì\94Ô\8d\86\82ª\93ü\82é
                procedure SetLastModified(d: TDateTime);
                procedure SetRound(b: Boolean);
                procedure SetRoundName(const s: string);
@@ -320,6 +314,7 @@ type
                property CreateDate: TDateTime read GetCreateDate;
                property        URL                                     : string                                read FURL write FURL;
                property        FilePath                : string        read GetFilePath;
+               property JumpAddress : Integer read FJumpAddress write FJumpAddress;
        end;
 
        TBoardGroup = class(TStringList)
index d03170e..616d856 100644 (file)
@@ -21,7 +21,7 @@ type
                FThread         : TThreadItem;
                FLastSize       : Integer;
                FRepaint        : Boolean;
-               FMovement       : string;                                                       ///< \83X\83N\83\8d\81[\83\8b\90æ\83A\83\93\83J\81[
+               //FMovement     : string;                                                       ///< \83X\83N\83\8d\81[\83\8b\90æ\83A\83\93\83J\81[
        public
                destructor      Destroy; override;
                property        Event : THTMLDocumentEventSink read FEvent write FEvent;
@@ -29,7 +29,7 @@ type
                property        Thread  : TThreadItem   read FThread    write FThread;
                property        LastSize        : Integer               read FLastSize  write FLastSize;
                property        Repaint         : Boolean               read FRepaint   write FRepaint;
-               property        Movement        : string                read FMovement  write FMovement;
+               //property      Movement        : string                read FMovement  write FMovement;
                procedure       Move(const AName: string);
                procedure       IDAnchorPopup(Abody :string);
        end;
index e4f1034..46170eb 100644 (file)
@@ -31,7 +31,8 @@ type
                tipDownloadHost,                                // : string                     // \8d¡\82Ì\83z\83X\83g\82Æ\88á\82¤\8fê\8d\87\82Ì\83z\83X\83g
                tipAgeSage,                                                     // : TThreadAgeSage     // \83A\83C\83e\83\80\82Ì\8fã\82°\89º\82°
                tipURL,                                                                 // : string                     // \83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
-               tipFilePath                                                     // : string                     // \82±\82Ì\83X\83\8c\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
+               tipFilePath,                                                    // : string                     // \82±\82Ì\83X\83\8c\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
+               tipJumpAddress                                                  // : Integer            // JUMP\90æ\83\8c\83X\94Ô\8d\86
        );
 
        // *************************************************************************
@@ -168,6 +169,8 @@ begin
                        Result := DWORD( CreateResultString( threadItem.URL ) );
                tipFilePath:                                                                                                            // \82±\82Ì\83X\83\8c\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
                        Result := DWORD( CreateResultString( threadItem.FilePath ) );
+               tipJumpAddress:
+                       Result := threadItem.JumpAddress;
        else
                Result := 0;
        end;
@@ -228,6 +231,8 @@ begin
                        threadItem.URL                                  := string( PChar( param ) );
                //tipFilePath:                                          // : string                     // \82±\82Ì\83X\83\8c\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
                //      threadItem.FilePath                     := string( PChar( param ) );
+               tipJumpAddress:
+                       threadItem.JumpAddress          := param;
        end;
 
 end;
index 5c72eb9..f258269 100644 (file)
@@ -106,6 +106,7 @@ var
        dp: TPoint;
        sp: TPoint;
        hwnd: THandle;
+       r: LongBool;
 begin
        Result := False;
        case Message of
@@ -146,7 +147,7 @@ begin
                WM_RBUTTONUP: begin
                        if FCancelMode then
                                FCancelMode := False
-                       else begin
+                       else if (FBeginGesture) then begin
                                FBeginGesture := False;
                                ReleaseCapture;
                                if FGestureItemList.Count <> 0 then begin
index 368b0ca..55495ef 100644 (file)
--- a/Giko.dfm
+++ b/Giko.dfm
@@ -527,7 +527,7 @@ object GikoForm: TGikoForm
               ControlData = {
                 4C00000098400000281100000000000000000000000000000000000000000000
                 000000004C000000000000000000000001000000E0D057007335CF11AE690800
-                2B2E12620A000000000000004C0000000114020000000000C000000000000046
+                2B2E126202000000000000004C0000000114020000000000C000000000000046
                 8000000000000000000000000000000000000000000000000000000000000000
                 00000000000000000100000000000000000000000000000000000000}
             end
index c58f321..ec2e81d 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -2337,10 +2337,10 @@ begin
                                                browserRec := InsertBrowserTab(Item.ThreadItem, True)
                                        else
                                                browserRec := InsertBrowserTab(Item.ThreadItem, False);
-                                       if browserRec.Thread = BrowserNullTab.Thread then begin
-                                               browserRec.Movement := BrowserNullTab.Movement;
-                                               BrowserNullTab.Movement := '';
-                                       end;
+//                                     if browserRec.Thread = BrowserNullTab.Thread then begin
+//                                             browserRec.Move(BrowserNullTab.Movement);
+//                                             BrowserNullTab.Movement := '';
+//                                     end;
                                end else begin
                                        if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
                                                                                                InsertBrowserTab(Item.ThreadItem);
@@ -2579,9 +2579,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;
@@ -2615,7 +2615,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
@@ -2673,7 +2672,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;
@@ -2682,12 +2680,27 @@ begin
                        end;
                end;
 
-               //ActiveContent\81@\82Ì\8dX\90V
-               FActiveContent := Thread;
+               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;
 
                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
                                s := '<HTML><BODY><CENTER>\82±\82Ì\83X\83\8c\83b\83h\82Í\8eæ\93¾\82µ\82Ä\82¢\82Ü\82¹\82ñ</CENTER></BODY></HTML>';
@@ -2700,7 +2713,7 @@ begin
                        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);
@@ -2710,51 +2723,37 @@ begin
                                Thread.Repaint := false;
 
                                Thread.Browser.OnStatusTextChange := nil;
-                               LockWindowUpdate(Thread.Browser.Handle);
+                               LockWindowUpdate(Thread.Browser.ParentWindow);
+                               //LockWindowUpdate(Thread.Browser.Handle);
                                HTMLCreater.CreateHTML2(
                                                Idispatch( olevariant(Thread.Browser.ControlInterface).Document),
                                                ThreadItem, sTitle);
-                               while ( (Thread.Browser.Document as IHTMLDocument2).readyState <> 'complete' ) do begin
-                                       Application.ProcessMessages;
+
+                               // \92\86\90g\82ª\93Ç\82Ý\8fI\82í\82é\82Ì\82ð\91Ò\82Â
+                               while ( (((Thread.Browser.Document as IHTMLDocument2).body as IHTMLElement).document
+                                               as IHTMLDocument2).readyState <> 'complete' ) do begin
                                        Sleep(1);
+                                       Application.ProcessMessages;
                                end;
                                Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
-                               if ThreadItem = nil then begin
-                                       FActiveContent := nil;
-                                       BrowserTab.Repaint;
-                                       Exit;
-                               end;
                                //PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( Thread.Browser ), 0 );
                        end else begin
                                // JUMP\82ð\8ew\92è\82³\82ê\82Ä\82¢\82½\82çJUMP\82·\82é
-                               if (Thread.Movement <> '') then begin
-                                       Thread.Move(Thread.Movement);
-                                       Thread.Movement := '';
-                               end;
+                               //if (Thread.Movement <> '') then begin
+                               //      Thread.Move(Thread.Movement);
+                               //      Thread.Movement := '';
+                               //end;
                        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;
+               //ActiveContent\81@\82Ì\8dX\90V
+               FActiveContent := Thread;
 
-                       //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;
+               //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 begin
+                       ListView.Refresh;
                end;
+
        finally
                Screen.Cursor := crDefault;
        end;
@@ -4244,16 +4243,18 @@ begin
                         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 (BrowserRecord <> nil) and (Length( BrowserRecord.Movement ) > 0) then begin
                                if threadItem.UnRead then begin
                                        threadItem.UnRead := False;
                                        TreeView.Refresh;
                                        ListView.Refresh;
                                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;
@@ -4593,6 +4594,7 @@ var
 begin
        stRes := 0;
        edRes := 0;
+       Thread.JumpAddress := 0;
        // \83^\83u\82ð\90\90¬
        browserRec := InsertBrowserTab(Thread);
        if (browserRec <> nil) then begin
@@ -4607,19 +4609,19 @@ begin
                        end;
                end;
                if ( stRes > 0 ) then begin
-                       browserRec.Movement := IntToStr( 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 (browserRec.Movement <> '') then begin
-                       try
-                               //SetContent(browserRec);
-                               browserRec.Move(browserRec.Movement);
-                               browserRec.Movement := '';
-                               doc := Idispatch( OleVariant( browserRec.Browser.ControlInterface ).Document ) as IHTMLDocument2;
-                               Thread.ScrollTop := doc.Body.ScrollTop;
-                       except
+                       Thread.JumpAddress := stRes;
+
+                       // \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) then begin
+                               try
+                                       browserRec.Move(IntToStr(stRes));
+                                       Thread.JumpAddress := 0;
+                                       doc := Idispatch( OleVariant( browserRec.Browser.ControlInterface ).Document ) as IHTMLDocument2;
+                                       Thread.ScrollTop := doc.Body.ScrollTop;
+                               except
+                               end;
                        end;
                end;
        end;
@@ -7215,6 +7217,7 @@ begin
        s := MouseGesture.GetGestureStr;
        Action := GikoSys.Setting.Gestures.GetGestureAction(s);
        if Action <> nil then
+               MouseGesture.OnGestureStart(nil);
                Action.Execute;
        StatusBar.Panels[1].Text := '';
 end;
@@ -7682,6 +7685,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;