Age | Commit message (Collapse) | Author |
|
|
|
Seeing that we already use a few methods directly from fpgStyle, lets change
all the others to be consistent.
|
|
Custom styles can now define there own button shift values and the TfpgButton
will adhere to them.
|
|
|
|
|
|
This allows a style to define by how much the button image and text must
shift (if at all) when the button is pressed. Possitive numbers moves right
and down. Negative numbers move up and left. Zero values means the icon and
text doesn't move [like under Mac OS X].
|
|
I know in FPC mode objfpc it is not strictly needed, but lets keep to the
Object Pascal language standards for now.
|
|
|
|
|
|
|
|
|
|
If the ActiveWidget was freed, the parent never got notified. If focus was
then changed, the parent tried to call ActiveWidget.HandleFocusKill, causing
an access violation.
The toolkit now correctly sets ActiveWidget to nil if it was freed, and as
a extra failsafe, wraps the HandleFocusKill call in a try..except block.
|
|
|
|
The code change in the original commit worked fine for Windows, but caused
other problems under Linux. So I have commented the original code change
for Linux until I can find a more suitable solution.
|
|
|
|
|
|
|
|
Now it takes into account the height of the component and calculates the
text position accordingly.
|
|
When painting the combobox did not take into account that the margin applies
to both the left and right side of the combobox.
|
|
a project uses clause.
|
|
The Margin is how many pixels from the internal background the text
must appear. Later we will replace this with SideMargin and HeightMargin
properties.
|
|
We now use Canvas.DrawString() to auto calculate the text position
based on the text flags passed in. This is now the same as TfpgEdit does.
|
|
Now the Height will only change if AutoSize is actually enabled.
|
|
* Linux now defaults to 'Liberation Sans' which comes standard
with most Linux distros, and is metric compatible with Arial.
The latter is freely available, but doesn't come standard
with any Linux disto.
* Windows default font size is now 8 (down from previous 10),
which is now the same as the remainder of Windows apps.
Strange that the same font as size (eg: Arial-10) is different
sizes in pixels under Linux and Windows. Weird! :-/
|
|
|
|
|
|
No more manual handling of LineEnding characters etc, because StringList
does that already, and our custom handling causes blank lines to
disappear in the memo. Not what we want.
|
|
|
|
|
|
Old behaviour was that the OnClick will trigger even if the left
mouse button was released outside the bounds. This is not standard
behaviour compared to other gui toolkits.
|
|
|
|
Sender: the widget the mouse was over when drop occurs.
Source: If whole DND is inside the same app, then Source is the
original Widget the DND started from.
|
|
Sender: the widget the mouse was over when drop occurs.
Source: If whole DND is inside the same app, then Source is the
original Widget the DND started from.
|
|
Sender: = the widget the mouse entered and that triggered the event
Source: = if whole DND occurs in same app, then Source is the
Widget the DND action started from.
|
|
Sender = widget the mouse entered and triggered the event
Source = if the whole DND is inside the same app, then Source
is the original Widget drag started from.
|
|
* A new constructor was also added where you can pass the tabsheet
title, so tabsheet size can be better calculated if tabs are
set to Left or Right.
|
|
|
|
* Also fixed the issue where the treeview did not always display
in the UI Designer.
* When the treeview is in the UI Designer, then only limited
painting occurs.
|
|
|
|
|
|
This means that the internal state of the result component instances
are set correctly - without extra developer intervention.
|
|
We must not use field variables for Width, Heigh, Top and Left any more.
|
|
|
|
This is sow that the internal FPrevXXX and other state information
is setup correctly.
The Edit Button controls also needed some extra code to work correctly
in the UI Designer.
|
|
|
|
Because widget positioning is new possible before it is show, we
need to call UpdateWindowPosition any time we set Width, Height,
Top or Left so that it can update the internal state of the
widget correctly.
|
|
We used FHeight instead of FLeft!! Dope!
|
|
Updated the following methods by rather checking the ComponentState,
than the HasHandle result. Why? Because we want alignment and anchor
calculations to work, even before we have a window handle. Something
that happens often when using a Frame-type design for the UI.
* HandleMove()
* HandleResize()
* UpdateWindowPosition()
Due to removing the HasHandle check in UpdateWindowPosition, we had
to do the HasHandle check in each backend code instead. We don't want
to trigger API calls when we don't have a window handle yet.
|
|
* All fpGUI backends must override it as supply an implementation.
* Moved DowaitWindowMessage() implementations to the protected
section in the GDI and X11 backends.
|
|
Also made MessagesPending() a virtual abstract method in fpg_base.pas
which every fpGUI backend must supply an implementation.
|