I've seen the changes you have made to support hi-dpi scaling. I don't know the purpose of this, something more to dig in :) !Since v1.8 Lazarus is supporting automatic scaling of sizes to the current screen resolution. While everything is done automatically for the built-in controls, third-party components must take care of scaling their inner dimensions themselves. For this purpose, the method DoAutoAdjustLayout must be overridden to apply the scaling factor (https://wiki.lazarus.freepascal.org/High_DPI#High_DPI_in_Lazarus_1.8_and_above). There is another method ScaleFontsForPPI() which takes care of scaling the font sizes. For older Laz versions, spkToolbars contains his own, simpler, scaling method which is executed in procedure SpkInitLayoutConsts() of unit spkt_Const.
At the moment you cannot commit. But when you have submitted several changes I can ask that you get commit rights.
Since you have svn now I'd like to ask you to create a proper patch instead of submitting the entire units. A patch contains only differences between your local version and the repository version - this way I can see more easily what you changed.
In order to create a patch with Tortoise you must right-click on your local spktoolbar folder and select "Create patch..." from the "TortoiseSVN" submenu. Tortoise will create a list of changed files, you can double-click any of them to see the changes yourself. Save the patch and upload it here. (This is the same procedure basically how you can create a patch for Lazarus itself).
The ideal place to submit patches is the bug tracker (link in the left forum bar) because changes can be documented in a more formal way than here. But for me, it's ok too if you submit your CCR patches to the forum because CCR is a rather informal activity.
Could you try to practice this with your current modification?
I took a look at bug tracker, maybe I'll use it later, if you think it's necessary. You'll probably have to explain me how it works, however... But for now, I'll create patches and post them here in the forum, for review and merge if all is OK.
I wonder what is the '#$E2#$87#$B2' code that stands for the arrow char ?Lazarus and thus spktoolbar work with utf8-encoded strings. In order to see all utf8-"characters", open the "Character map" under the "Edit" menu. The "corner arrow" can be found in the "Arrows" range. Note that any arbitrary code point is not necessarily contained in the font currently used. When you click on a cell in the character map the related character is copied into your source code window. The #$E2#$87#$B2 is the binary representation of the "corner arrow" - I hope you know that utf8 consists of up to 4 bytes per "character" (or better: code point - see any other discussion about utf8 here in the forum).
But what happen if I create a patch if the previous one is not yet applied on the repo ? Wouldn't the second patch also hold the changes of the first patch ?I am not very strong in these version control systems. But my feeling is that with SVN you must wait until the first patch has been applied before you can submit a follow-up patch. With GIT you can create a merge request after each patch separately. Standard access to Lazarus version control, however, is SVN, but I know that some developers maintain a git mirror.
I had some troubles to update my SpkToolbar after you committed my last patch : updated using SVN cause conflicts on all the changed files. It made my rebuild of Lazarus crashing due to weird texts on the unit (seems that it was the "patch commands" that were put directly in the source :o !). I had to revert back using SVN, and then I got the correct, updated, units... I don't know what happen, but finally all is working now.The reason probably is that I did not apply your patch byte-by-byte: I renamend some identifiers, and also added the MoreButtonStyle property. Therefore, your version was no longer the same as that from the ccr repository. In such cases, I always revert my version and update to the official revision; in case of a conflict I always accept "their" version.