mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 04:59:08 +02:00
gtk:
- separate SM_CXSCREEN and SM_CXVIRTUALSCREEN for gtk2 (affects TForm.ScreenPosition screen/desktop center) - implement SetCursorPos for gtk2 (if version >= 2.8) git-svn-id: trunk@12196 -
This commit is contained in:
parent
544849a53e
commit
df5e7aa81e
@ -79,6 +79,7 @@
|
|||||||
// not supported
|
// not supported
|
||||||
{$fatal X is required for GTK1}
|
{$fatal X is required for GTK1}
|
||||||
{$endif}
|
{$endif}
|
||||||
|
{$define GTK_2_8}
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3307,8 +3307,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
FontList := TStringlist.Create;
|
FontList := TStringlist.Create;
|
||||||
try
|
try
|
||||||
if Family<>'' then Tmp := '-*-'+Family+'-*-*-*-*-*-*-*-*-*-*-*-*'
|
if Family<>'' then
|
||||||
else Tmp := '-*'; // get rid of aliases
|
Tmp := '-*-'+Family+'-*-*-*-*-*-*-*-*-*-*-*-*'
|
||||||
|
else
|
||||||
|
Tmp := '-*'; // get rid of aliases
|
||||||
{$ifdef VerboseEnumFonts}
|
{$ifdef VerboseEnumFonts}
|
||||||
WriteLn('Looking for fonts matching: ', tmp);
|
WriteLn('Looking for fonts matching: ', tmp);
|
||||||
{$endif}
|
{$endif}
|
||||||
@ -5697,11 +5699,15 @@ var
|
|||||||
P: Pointer;
|
P: Pointer;
|
||||||
ax,ay,ah,aw: gint;
|
ax,ay,ah,aw: gint;
|
||||||
auw, auh: guint;
|
auw, auh: guint;
|
||||||
{$ifndef GTK2}{$ifdef HasX}
|
{$ifdef GTK2}
|
||||||
|
display: PGdkDisplay;
|
||||||
|
{$else}
|
||||||
|
{$ifdef HasX}
|
||||||
XDisplay: PDisplay;
|
XDisplay: PDisplay;
|
||||||
XScreen: PScreen;
|
XScreen: PScreen;
|
||||||
XWindow: TWindow;
|
XWindow: TWindow;
|
||||||
{$endif}{$endif}
|
{$endif}
|
||||||
|
{$endif}
|
||||||
begin
|
begin
|
||||||
Assert(False, Format('Trace:> [TGtkWidgetSet.GetSystemMetrics] %d', [nIndex]));
|
Assert(False, Format('Trace:> [TGtkWidgetSet.GetSystemMetrics] %d', [nIndex]));
|
||||||
case nIndex of
|
case nIndex of
|
||||||
@ -5820,15 +5826,19 @@ begin
|
|||||||
SM_CXMAXIMIZED:
|
SM_CXMAXIMIZED:
|
||||||
begin
|
begin
|
||||||
{$IFDEF HasX}
|
{$IFDEF HasX}
|
||||||
if XGetWorkarea(ax,ay,aw,ah)>=0 then result:=aw
|
if XGetWorkarea(ax,ay,aw,ah)>=0 then
|
||||||
else getSystemMetrics(SM_CXSCREEN);
|
Result := aw
|
||||||
|
else
|
||||||
|
Result := getSystemMetrics(SM_CXSCREEN);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
SM_CYMAXIMIZED:
|
SM_CYMAXIMIZED:
|
||||||
begin
|
begin
|
||||||
{$IFDEF HasX}
|
{$IFDEF HasX}
|
||||||
if XGetWorkarea(ax,ay,aw,ah)>=0 then result:=ah
|
if XGetWorkarea(ax,ay,aw,ah)>=0 then
|
||||||
else getSystemMetrics(SM_CYSCREEN);
|
Result := ah
|
||||||
|
else
|
||||||
|
Result := getSystemMetrics(SM_CYSCREEN);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
SM_CXMAXTRACK:
|
SM_CXMAXTRACK:
|
||||||
@ -5887,8 +5897,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
Assert(False, 'Trace:TODO: [TGtkWidgetSet.GetSystemMetrics] --> SM_CYMINTRACK ');
|
Assert(False, 'Trace:TODO: [TGtkWidgetSet.GetSystemMetrics] --> SM_CYMINTRACK ');
|
||||||
end;
|
end;
|
||||||
SM_CXSCREEN,
|
SM_CXSCREEN:
|
||||||
SM_CXVIRTUALSCREEN:
|
|
||||||
begin
|
begin
|
||||||
{$IFDEF GTK1} { Partial fix for multi monitor systems - force use of first one }
|
{$IFDEF GTK1} { Partial fix for multi monitor systems - force use of first one }
|
||||||
{$IFDEF UseXinerama}
|
{$IFDEF UseXinerama}
|
||||||
@ -5899,6 +5908,18 @@ begin
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
result := gdk_Screen_Width;
|
result := gdk_Screen_Width;
|
||||||
end;
|
end;
|
||||||
|
SM_CXVIRTUALSCREEN:
|
||||||
|
begin
|
||||||
|
{$ifdef GTK2}
|
||||||
|
aw := 0;
|
||||||
|
display := gdk_display_get_default();
|
||||||
|
for ax := 0 to gdk_display_get_n_screens(display) - 1 do
|
||||||
|
inc(aw, gdk_screen_get_width(gdk_display_get_screen(display, ax)));
|
||||||
|
Result := ax;
|
||||||
|
{$else}
|
||||||
|
Result := getSystemMetrics(SM_CXSCREEN);
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
SM_CYSCREEN,
|
SM_CYSCREEN,
|
||||||
SM_CYVIRTUALSCREEN:
|
SM_CYVIRTUALSCREEN:
|
||||||
begin
|
begin
|
||||||
@ -8433,13 +8454,13 @@ begin
|
|||||||
{$IFDEF DebugGDKTraps}EndGDKErrorTrap;{$ENDIF}
|
{$IFDEF DebugGDKTraps}EndGDKErrorTrap;{$ENDIF}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{$ELSE UNIX}
|
{$ELSE HasX}
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
DebugLn('TGtkWidgetSet.SetCursorPos not implemented for this platform');
|
DebugLn('TGtkWidgetSet.SetCursorPos not implemented for this platform');
|
||||||
// Can this call TWin32WidgetSet.SetCursorPos?
|
// Can this call TWin32WidgetSet.SetCursorPos?
|
||||||
end;
|
end;
|
||||||
{$ENDIF UNIX}
|
{$ENDIF HasX}
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Function: SetFocus
|
Function: SetFocus
|
||||||
|
@ -66,6 +66,10 @@ function gdk_cursor_new_from_pixbuf(display: PGdkDisplay; pixbuf: PGdkPixbuf; x,
|
|||||||
function gdk_display_get_default_cursor_size(display: PGdkDisplay): guint; cdecl; external gdklib;
|
function gdk_display_get_default_cursor_size(display: PGdkDisplay): guint; cdecl; external gdklib;
|
||||||
procedure gdk_display_get_maximal_cursor_size(display: PGdkDisplay; w, h: pguint); cdecl; external gdklib;
|
procedure gdk_display_get_maximal_cursor_size(display: PGdkDisplay; w, h: pguint); cdecl; external gdklib;
|
||||||
|
|
||||||
|
{$ifdef GTK_2_8}
|
||||||
|
// gdk 2.8
|
||||||
|
procedure gdk_display_warp_pointer(display: PGdkDisplay; screen: PGdkScreen; x, y: gint); cdecl; external gdklib;
|
||||||
|
{$endif}
|
||||||
{ for future use
|
{ for future use
|
||||||
function gdk_display_supports_cursor_alpha(display: PGdkDisplay): gBoolean; cdecl; external gdklib;
|
function gdk_display_supports_cursor_alpha(display: PGdkDisplay): gBoolean; cdecl; external gdklib;
|
||||||
function gdk_display_supports_cursor_color(display: PGdkDisplay): gBoolean; cdecl; external gdklib;
|
function gdk_display_supports_cursor_color(display: PGdkDisplay): gBoolean; cdecl; external gdklib;
|
||||||
|
@ -31,6 +31,8 @@ interface
|
|||||||
{$ASSERTIONS ON}
|
{$ASSERTIONS ON}
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
|
//{$I gtkdefines.inc}
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Types, Classes, SysUtils,
|
Types, Classes, SysUtils,
|
||||||
{$IfNDef GTK2_2}
|
{$IfNDef GTK2_2}
|
||||||
|
@ -481,6 +481,16 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TGtk2WidgetSet.SetCursorPos(X, Y: Integer): Boolean;
|
||||||
|
begin
|
||||||
|
{$ifdef GTK_2_8}
|
||||||
|
gdk_display_warp_pointer(gdk_display_get_default(), gdk_screen_get_default(), X, Y);
|
||||||
|
Result := True;
|
||||||
|
{$else}
|
||||||
|
Result:=inherited SetCursorPos(X, Y);
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
function ShowWindow(hWnd: HWND; nCmdShow: Integer): Boolean;
|
function ShowWindow(hWnd: HWND; nCmdShow: Integer): Boolean;
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ function ExtTextOut(DC: HDC; X, Y: Integer; Options: Longint; Rect: PRect; Str:
|
|||||||
function GetCursorPos(var lpPoint: TPoint ): Boolean; override;
|
function GetCursorPos(var lpPoint: TPoint ): Boolean; override;
|
||||||
function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; override;
|
function GetTextExtentPoint(DC: HDC; Str: PChar; Count: Integer; var Size: TSize): Boolean; override;
|
||||||
|
|
||||||
|
function SetCursorPos(X, Y: Integer): Boolean; override;
|
||||||
function ShowWindow(hWnd: HWND; nCmdShow: Integer): Boolean; override;
|
function ShowWindow(hWnd: HWND; nCmdShow: Integer): Boolean; override;
|
||||||
|
|
||||||
function TextOut(DC: HDC; X,Y : Integer; Str : Pchar; Count: Integer) : Boolean; override;
|
function TextOut(DC: HDC; X,Y : Integer; Str : Pchar; Count: Integer) : Boolean; override;
|
||||||
|
Loading…
Reference in New Issue
Block a user