From: Remko B. <rem...@us...> - 2003-02-16 12:44:12
|
Update of /cvsroot/jvcl/rm/source In directory sc8-pr-cvs1:/tmp/cvs-serv14011 Modified Files: JvBrowseFolder.pas Log Message: Mantis #711 Index: JvBrowseFolder.pas =================================================================== RCS file: /cvsroot/jvcl/rm/source/JvBrowseFolder.pas,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** JvBrowseFolder.pas 15 Feb 2003 12:59:22 -0000 1.4 --- JvBrowseFolder.pas 16 Feb 2003 12:44:08 -0000 1.5 *************** *** 73,77 **** FDefWndProc: Pointer; FObjectInstance: Pointer; ! FSizeInitialized: Boolean; { For hooking the control we need some vars (FDefWndProc, FObjectInstance) --- 73,77 ---- FDefWndProc: Pointer; FObjectInstance: Pointer; ! FPositionSet: Boolean; { For hooking the control we need some vars (FDefWndProc, FObjectInstance) *************** *** 86,90 **** procedure UpdateStatusText(const HWND: THandle; const Text: string); procedure SetPath(const HWND: THandle; const Path: string); - procedure WMSize(var Msg: TWMSize); message WM_SIZE; procedure WMShowWindow(var Msg: TMessage); message WM_SHOWWINDOW; protected --- 86,89 ---- *************** *** 160,164 **** inherited Create(AOwner); FOptions := [odStatusAvailable, odNewDialogStyle]; ! FOwnerHandle := GetOwnerHandle; {$IFDEF COMPILER6_UP} FObjectInstance := Classes.MakeObjectInstance(MainWndProc); --- 159,164 ---- inherited Create(AOwner); FOptions := [odStatusAvailable, odNewDialogStyle]; ! { (rb) delayed until execute } ! //FOwnerHandle := GetOwnerHandle; {$IFDEF COMPILER6_UP} FObjectInstance := Classes.MakeObjectInstance(MainWndProc); *************** *** 284,290 **** begin // Change the position of the dialog ! FSizeInitialized := not (odNewDialogStyle in Options); ! if not FSizeInitialized then ! // Delay the change until receive of WM_SIZE HookDialog else --- 284,290 ---- begin // Change the position of the dialog ! FPositionSet := not (odNewDialogStyle in Options); ! if not FPositionSet then ! // Delay the change until receive of WM_SHOWWINDOW HookDialog else *************** *** 345,356 **** ShellVersion: Cardinal; begin - FDialogHandle := 0; - FSizeInitialized := False; - Result := False; - ShellVersion := GetShellVersion; if ShellVersion < $00040000 then raise EJVCLException.Create('Shell not compatible with BrowseForFolder'); FillChar(BrowseInfo, SizeOf(BrowseInfo), #0); --- 345,357 ---- ShellVersion: Cardinal; begin ShellVersion := GetShellVersion; if ShellVersion < $00040000 then raise EJVCLException.Create('Shell not compatible with BrowseForFolder'); + FDialogHandle := 0; + FOwnerHandle := GetOwnerHandle; + FPositionSet := False; + Result := False; + FillChar(BrowseInfo, SizeOf(BrowseInfo), #0); *************** *** 378,382 **** BrowseInfo.ulFlags := BrowseInfo.ulFlags or BIF_SHAREABLE; ! BrowseInfo.hwndOwner := GetOwnerHandle; if CSIDLLocations[FFromDirectory] <> 0 then SHGetSpecialFolderLocation(Handle, CSIDLLocations[FFromDirectory], --- 379,384 ---- BrowseInfo.ulFlags := BrowseInfo.ulFlags or BIF_SHAREABLE; ! BrowseInfo.hwndOwner := FOwnerHandle; ! if CSIDLLocations[FFromDirectory] <> 0 then SHGetSpecialFolderLocation(Handle, CSIDLLocations[FFromDirectory], *************** *** 414,417 **** --- 416,420 ---- end; FDialogHandle := 0; + FOwnerHandle := 0; end; *************** *** 420,424 **** F: TCustomForm; begin ! if Owner <> nil then F := GetParentForm(TControl(Owner)) else --- 423,428 ---- F: TCustomForm; begin ! // (Ralf Kaiser) Owner maybe a TDataModule ! if Owner is TControl then F := GetParentForm(TControl(Owner)) else *************** *** 427,431 **** Result := F.Handle else ! if Assigned(Owner) and (Owner is TWinControl) then Result := (Owner as TWinControl).Handle else --- 431,435 ---- Result := F.Handle else ! if Owner is TWinControl then Result := (Owner as TWinControl).Handle else *************** *** 459,473 **** end; - procedure TJvBrowseFolder.WMSize(var Msg: TWMSize); - begin - inherited; - if FSizeInitialized then - Exit; - - { Maybe unhook the control now? } - SetDialogPos(FOwnerHandle, FDialogHandle, Position); - FSizeInitialized := True; - end; - procedure TJvBrowseFolder.HookDialog; begin --- 463,466 ---- *************** *** 484,490 **** Maybe good idea to only respond to WM_SHOWWINDOW <g> } ! if not FSizeInitialized then SetDialogPos(FOwnerHandle, FDialogHandle, Position); ! FSizeInitialized := True; inherited; --- 477,483 ---- Maybe good idea to only respond to WM_SHOWWINDOW <g> } ! if not FPositionSet then SetDialogPos(FOwnerHandle, FDialogHandle, Position); ! FPositionSet := True; inherited; |