View Issue Details

IDProjectCategoryView StatusLast Update
0032280LazarusIDEpublic2017-09-07 15:33
Reportersalavata Assigned ToOndrej Pokorny  
Status resolvedResolutionfixed 
Product Version1.8RC4 
Summary0032280: Tiny "resize cursor" and some icons on high-DPI displays with big scaling
DescriptionOn a laptop with a 3840x2160 display and big scaling (300% or higher, otherwise all texts and icons are extremely tiny) some icons remained tiny on my laptop.

Additionally, the "resize cursor" for moving the columns (i.e. in the Object Inspector window) in boundary is tiny too.

Other DPI-aware programs, like Bandizip or Download Master show the resize cursor (for moving the columns) of a good size.
Steps To ReproduceDownload and install Lazarus.
Change the scaling from 100% to 300% (or 150%, 200%).
Launch the Lazarus IDE.
Try to resize the columns in the Object Inspector window.
Additional InformationYou don't need to have UHD display to see these distorted things. Simply temporally change the scaling from 100% to 300% (or 400%, or 500%) on a regular 1280x720 (or 1920x1080) display before launching the Lazarus IDE.
TagsNo tags attached.
Fixed in Revision55670, 55672, 55674
Attached Files


related to 0031753 resolvedOndrej Pokorny SynEdit hi-dpi: not fully scaled 
related to 0032097 resolvedMichl Weird-looking IDE (esp. Object Inspector) and tiny icons on high-DPI displays with scaling=300% 
related to 0032385 resolvedMichl gtk2: crDrag cursor is 2x-3x bigger 



2017-08-16 09:29


Ondrej Pokorny

2017-08-16 10:57

developer   ~0102200

Now there is a custom resize cursor stored in the EXE (from within LCL) - that obviously isn't scaled. Can it be received from the OS?


2017-08-16 11:53

developer   ~0102202

Last edited: 2017-08-16 11:53

View 2 revisions

I tried to fix this issue for a while, as I've seen it before. The simplest way would be to replace the current cursors with the OS supported one, like it is done in GTK2 (IIRC there are all cursors High-DPI aware).


2017-08-16 11:59

developer   ~0102203

Last edited: 2017-08-16 12:02

View 2 revisions

The left arrow in ObjectInspector should be working. AFAIK I fixed this one. Maybe I forget to merge request it for 1.8?!

For the SynEdit, there is a bug report 0031753.


2017-08-16 13:10

developer (2,061 bytes)

Ondrej Pokorny

2017-08-16 16:54

developer   ~0102208

It looks like there is no native split cursor in windows:


2017-08-16 17:36

developer   ~0102209

Yes, also not on GTK2, as written above. There the split cursor replaced with cursor SizeNS. See

  case TCursor(ACursor) of
    crDefault: CursorValue := GDK_LEFT_PTR;
    crArrow: CursorValue := GDK_Arrow;
    crCross: CursorValue := GDK_Cross;
    crIBeam: CursorValue := GDK_XTerm;
    crSizeNESW: CursorValue := GDK_BOTTOM_LEFT_CORNER;
    crSizeNS: CursorValue := GDK_SB_V_DOUBLE_ARROW;
    crSizeNWSE: CursorValue := GDK_TOP_LEFT_CORNER;
    crSizeWE: CursorValue := GDK_SB_H_DOUBLE_ARROW;
    crSizeNW: CursorValue := GDK_TOP_LEFT_CORNER;
    crSizeN: CursorValue := GDK_TOP_SIDE;
    crSizeNE: CursorValue := GDK_TOP_RIGHT_CORNER;
    crSizeW: CursorValue := GDK_LEFT_SIDE;
    crSizeE: CursorValue := GDK_RIGHT_SIDE;
    crSizeSW: CursorValue := GDK_BOTTOM_LEFT_CORNER;
    crSizeS: CursorValue := GDK_BOTTOM_SIDE;
    crSizeSE: CursorValue := GDK_BOTTOM_RIGHT_CORNER;
    crUpArrow: CursorValue := GDK_LEFT_PTR;
    crHourGlass:CursorValue := GDK_WATCH;
    crHSplit: CursorValue := GDK_SB_H_DOUBLE_ARROW;
    crVSplit: CursorValue := GDK_SB_V_DOUBLE_ARROW;
    crAppStart: CursorValue := GDK_LEFT_PTR;
    crHelp: CursorValue := GDK_QUESTION_ARROW;
    crHandPoint:CursorValue := GDK_Hand2;
    crSizeAll: CursorValue := GDK_FLEUR;

This works for Windows too, but we lost the split cursor and thats IMHO not the preferd way to go.

E.G. Total Commander is DPI-aware and its split cursor is DPI-aware too.

So IMHO we have to insert these DPI-aware cursors as ico/png to resource and load the correct sized one.

Ondrej Pokorny

2017-08-16 17:47

developer   ~0102210

> So IMHO we have to insert these DPI-aware cursors as ico/png to resource.

Yes, the resource is already in the LCL. The cursors have to be drawn with different resolutions and resaved back into LCL. The CUR format can store multiple resolutions for one cursor/icon.


2017-08-16 21:27

developer   ~0102212

Last edited: 2017-08-16 21:28

View 2 revisions

> The cursors have to be drawn with different resolutions and resaved back into
> LCL. The CUR format can store multiple resolutions for one cursor/icon.

You are right. I just tested it with crHSplit and replaced it with a multi sized .cur and it work fine. So it is just a task of diligence.


2017-08-17 00:06

developer   ~0102213

Last edited: 2017-08-17 00:15

View 2 revisions

After revision 55670, all cursors from the test app are sized correct here (32, 48, 64 pixel). I used the free tool "RealWorld Cursor Editor" in combination with Gimp. For cursor design this tool is real good (never used it before).

@Ondrej: The other issue, the tiny arrow in ObjectInspector I can't see here, neither trunk nor 1.8RC4. Can you see it?

Ondrej Pokorny

2017-08-17 11:28

developer   ~0102216

Great, thanks Michl.

@ObjectInspector: the arrow was scaled - but only to maximum 200% (and all the other IDE icons as well). It wasn't vertically centered, though. I fixed both issues (r55672, r55674).

salvata, please test with trunk because I cannot test scaling factors above 200% - "500% on a regular 1280x720" is clearly not possible ;)

Since the synedit issue has a separate report, I am resolving this one.


2017-08-18 17:41

reporter   ~0102224

The arrow seems OK now at 300%.

Issue History

Date Modified Username Field Change
2017-08-16 09:19 salavata New Issue
2017-08-16 09:29 salavata File Added: Lazarus18RC4_TinyColumnResizeCursorAndSomeIcons2.jpg
2017-08-16 10:57 Ondrej Pokorny Note Added: 0102200
2017-08-16 11:53 Michl Note Added: 0102202
2017-08-16 11:53 Michl Note Edited: 0102202 View Revisions
2017-08-16 11:59 Michl Note Added: 0102203
2017-08-16 12:02 Michl Note Edited: 0102203 View Revisions
2017-08-16 12:02 Michl Relationship added related to 0031753
2017-08-16 12:04 Michl Relationship added related to 0032097
2017-08-16 13:10 Michl File Added:
2017-08-16 16:54 Ondrej Pokorny Note Added: 0102208
2017-08-16 17:36 Michl Note Added: 0102209
2017-08-16 17:47 Ondrej Pokorny Note Added: 0102210
2017-08-16 21:27 Michl Note Added: 0102212
2017-08-16 21:27 Michl Assigned To => Michl
2017-08-16 21:27 Michl Status new => assigned
2017-08-16 21:28 Michl Note Edited: 0102212 View Revisions
2017-08-17 00:06 Michl Fixed in Revision => r55670
2017-08-17 00:06 Michl LazTarget => -
2017-08-17 00:06 Michl Note Added: 0102213
2017-08-17 00:07 Michl Assigned To Michl =>
2017-08-17 00:08 Michl Status assigned => new
2017-08-17 00:15 Michl Note Edited: 0102213 View Revisions
2017-08-17 11:24 Ondrej Pokorny Assigned To => Ondrej Pokorny
2017-08-17 11:24 Ondrej Pokorny Status new => assigned
2017-08-17 11:28 Ondrej Pokorny Fixed in Revision r55670 => 55670, 55672, 55674
2017-08-17 11:28 Ondrej Pokorny Note Added: 0102216
2017-08-17 11:28 Ondrej Pokorny Status assigned => resolved
2017-08-17 11:28 Ondrej Pokorny Resolution open => fixed
2017-08-18 17:41 salavata Note Added: 0102224
2017-09-07 15:33 Michl Relationship added related to 0032385