* Patch from Paul Ishenin (max custom cursor size)

git-svn-id: trunk@10676 -
This commit is contained in:
marc 2007-02-24 15:25:32 +00:00
parent 23272ca9b2
commit 932075c34f
2 changed files with 23 additions and 5 deletions

View File

@ -45,17 +45,24 @@ function gdk_window_xwindow(win : PGdkDrawable): TXID; cdecl; external gdklib na
{$endif}
function gdk_screen_get_default: PGdkScreen; cdecl; external gdklib;
procedure laz_gdk_gc_set_dashes(gc:PGdkGC; dash_offset:gint;
dashlist:Pgint8; n:gint); cdecl; external gdkdll name 'gdk_gc_set_dashes';
// gtk 2.2
// gdk 2.2
procedure gdk_display_get_pointer(display : PGdkDisplay; screen :PGdkScreen; x :Pgint; y : Pgint; mask : PGdkModifierType); cdecl; external gdklib;
function gdk_display_get_default:PGdkDisplay; cdecl; external gdklib;
procedure gdk_draw_pixbuf(drawable : PGdkDrawable; gc : PGdkGC; pixbuf : PGdkPixbuf; src_x, src_y, dest_x, dest_y, width, height : gint;
dither : TGdkRgbDither; x_dither, y_dither : gint); cdecl; external gdklib;
// gtk 2.4
function gdk_cursor_new_from_pixbuf(display: PGdkDisplay; pixbuf: PGdkPixbuf; x, y: gint): PGdkCursor; cdecl; external gdklib name 'gdk_cursor_new_from_pixbuf';
function gdk_screen_get_default: PGdkScreen; cdecl; external gdklib;
// gdk 2.4
function gdk_cursor_new_from_pixbuf(display: PGdkDisplay; pixbuf: PGdkPixbuf; x, y: gint): PGdkCursor; cdecl; external gdklib name 'gdk_cursor_new_from_pixbuf';
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;
{ for future use
function gdk_display_supports_cursor_alpha(display: PGdkDisplay): gBoolean; cdecl; external gdklib;
function gdk_display_supports_cursor_color(display: PGdkDisplay): gBoolean; cdecl; external gdklib;
}

View File

@ -69,6 +69,7 @@ var
pixmap: PGdkPixmap;
bitmap: PGdkBitmap;
w, h: integer;
max_w, max_h: guint;
pixbuf, masked_pixbuf: PGdkPixbuf;
begin
Result := 0;
@ -78,6 +79,16 @@ begin
bitmap := PGDIObject(ACursorInfo^.hbmColor)^.GDIBitmapMaskObject;
gdk_drawable_get_size(pixmap, @w, @h);
gdk_display_get_maximal_cursor_size(gdk_display_get_default, @max_w, @max_h);
if (w > max_w) or (h > max_h) then
exit;
{
max_w := gdk_display_get_default_cursor_size(gdk_display_get_default);
if (w > max_w) or (h > max_w) then
DebugLn(['CreateCursor cursor size:',w,'x',h,' > default size:', max_w]);
}
// create alpha pixbuf
pixbuf := gdk_pixbuf_new(GDK_COLORSPACE_RGB, True, 8, w, h);