diff options
author | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2008-03-18 10:55:47 +0000 |
---|---|---|
committer | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2008-03-18 10:55:47 +0000 |
commit | 96db2b4c9e32dd427b5df6dfa9f79d536643d493 (patch) | |
tree | d95dd8f5f9bbb5111a6e4f44878b3e9056baf1f2 /src/corelib/gdi | |
parent | 794326298c08cfa70d719523d7369ceb5a492c5c (diff) | |
download | fpGUI-96db2b4c9e32dd427b5df6dfa9f79d536643d493.tar.xz |
* Applied a patch from Vladimir which imploves the file system encoding and seems to fix the error received in the File dialog.
* I implemented three new functions to retrieve the DPI value of the screen.
Diffstat (limited to 'src/corelib/gdi')
-rw-r--r-- | src/corelib/gdi/gfx_gdi.pas | 32 | ||||
-rw-r--r-- | src/corelib/gdi/gfx_utils_impl.inc | 35 |
2 files changed, 28 insertions, 39 deletions
diff --git a/src/corelib/gdi/gfx_gdi.pas b/src/corelib/gdi/gfx_gdi.pas index e785c1e2..66090c92 100644 --- a/src/corelib/gdi/gfx_gdi.pas +++ b/src/corelib/gdi/gfx_gdi.pas @@ -135,8 +135,6 @@ type end; - { TfpgWindowImpl } - TfpgWindowImpl = class(TfpgWindowBase) private FMouseInWindow: boolean; @@ -194,6 +192,9 @@ type procedure DoFlush; function GetScreenWidth: TfpgCoord; override; function GetScreenHeight: TfpgCoord; override; + function Screen_dpi_x: integer; override; + function Screen_dpi_y: integer; override; + function Screen_dpi: integer; override; property Display: HDC read FDisplay; end; @@ -207,12 +208,11 @@ type end; - { TfpgFileListImpl } - TfpgFileListImpl = class(TfpgFileListBase) procedure PopulateSpecialDirs(const aDirectory: TfpgString); override; end; + implementation uses @@ -1015,6 +1015,21 @@ begin Result := r.Bottom - r.Top; end; +function TfpgApplicationImpl.Screen_dpi_x: integer; +begin + Result := 96; +end; + +function TfpgApplicationImpl.Screen_dpi_y: integer; +begin + Result := 96; +end; + +function TfpgApplicationImpl.Screen_dpi: integer; +begin + Result := 96; +end; + { TfpgWindowImpl } var // these are required for Windows MouseEnter & MouseExit detection. @@ -2013,6 +2028,8 @@ end; { TfpgFileListImpl } procedure TfpgFileListImpl.PopulateSpecialDirs(const aDirectory: TfpgString); +const + MAX_DRIVES = 25; var n: integer; drvs: string; @@ -2023,15 +2040,12 @@ begin if Copy(aDirectory, 2, 1) = ':' then begin n := 0; - { TODO: replace 25 with a constant: max nested directories displayed } - while n <= 25 do + while n <= MAX_DRIVES do begin drvs := chr(n+ord('A'))+':\'; if Windows.GetDriveType(PChar(drvs)) <> 1 then begin - // vvzh: to avoid doubling of drive letters in inherited UpdateDirectory - if Pos(drvs, aDirectory) <> 1 then - FSpecialDirs.Add(drvs); + FSpecialDirs.Add(drvs); end; inc(n); end; diff --git a/src/corelib/gdi/gfx_utils_impl.inc b/src/corelib/gdi/gfx_utils_impl.inc index 2597d977..c8b264e1 100644 --- a/src/corelib/gdi/gfx_utils_impl.inc +++ b/src/corelib/gdi/gfx_utils_impl.inc @@ -1,39 +1,14 @@ {%mainunit gfx_utils.pas} -// GDI specific implementations of RTL wrapper functions +// GDI specific implementations of encoding functions -function fpgFindFirst(const Path: TfpgString; Attr: Longint; out - Rslt: TSearchRec): Longint; +function fpgToOSEncoding(aString: TfpgString): string; begin - Result := FindFirst(Utf8ToAnsi(Path), Attr, Rslt); - Rslt.Name := AnsiToUtf8(Rslt.Name); + Result := Utf8ToAnsi(aString); end; -function fpgFindNext(var Rslt: TSearchRec): Longint; +function fpgFromOSEncoding(aString: string): TfpgString; begin - Result := FindNext(Rslt); - Rslt.Name := AnsiToUtf8(Rslt.Name); + Result := AnsiToUtf8(aString); end; -function fpgGetCurrentDir: TfpgString; -begin - Result := AnsiToUtf8(GetCurrentDir); -end; - -function fpgSetCurrentDir(const NewDir: TfpgString): Boolean; -begin - Result := SetCurrentDir(Utf8ToAnsi(NewDir)); -end; - -function fpgExpandFileName(const FileName: TfpgString): TfpgString; -begin - Result := AnsiToUtf8(ExpandFileName(Utf8ToAnsi(FileName))); -end; - -function fpgFileExists(const FileName: TfpgString): Boolean; -begin - Result := FileExists(Utf8ToAnsi(FileName)); -end; - - - |