Merged revision(s) 52154 #39279083c5 from trunk:

Gtk2: unify TScrollbar behaviour with win32 and qt. issue #20127
........

git-svn-id: branches/fixes_1_6@52174 -
This commit is contained in:
maxim 2016-04-11 22:22:13 +00:00
parent 23e373991d
commit ee563f18e6
3 changed files with 19 additions and 9 deletions

View File

@ -63,6 +63,7 @@ initialization
pointer(gtk_tree_view_get_grid_lines):=GetProcAddress(gtkhandle,'gtk_tree_view_get_grid_lines');
pointer(gtk_tree_view_set_grid_lines):=GetProcAddress(gtkhandle,'gtk_tree_view_set_grid_lines');
pointer(gtk_window_get_group):=GetProcAddress(gtkhandle,'gtk_window_get_group');
pointer(gtk_adjustment_configure):=GetProcAddress(gtkhandle,'gtk_adjustment_configure');
break;
end;
end;

View File

@ -346,4 +346,7 @@ var
gtk_tree_view_set_grid_lines: procedure(tree_view: PGtkTreeView; grid_lines: TGtkTreeViewGridLines); cdecl;
gtk_tree_view_get_grid_lines: function(tree_view: PGtkTreeView): TGtkTreeViewGridLines; cdecl;
gtk_window_get_group: function(window:PGtkWindow): PGtkWindowGroup; cdecl;
// since 2.14
gtk_adjustment_configure: procedure(Adjustment: PGtkAdjustment; AValue: GDouble; ALower: GDouble; AUpper: GDouble;
AStepIncrement: GDouble; APageIncrement: GDouble; APageSize: GDouble); cdecl;

View File

@ -2666,12 +2666,13 @@ begin
min to max-pagesize which would be different from the behaviour on other
widgetsets.}
Adjustment := PGtkAdjustment(gtk_adjustment_new(Position, Min,
Max + PageSize, SmallChange, LargeChange, PageSize));
Max, SmallChange, LargeChange, PageSize));
if (Kind = sbHorizontal) then
Widget := gtk_hscrollbar_new(Adjustment)
else
Widget := gtk_vscrollbar_new(Adjustment);
gtk_range_set_update_policy(PGtkRange(Widget), GTK_UPDATE_CONTINUOUS);
end;
Result := TLCLIntfHandle({%H-}PtrUInt(Widget));
@ -2702,16 +2703,21 @@ begin
begin
Range := GTK_RANGE({%H-}Pointer(Handle));
{for gtk >= 2.14 use gtk_adjustment_configure}
with Range^.adjustment^ do
if (gtk_major_version >= 2) and (gtk_minor_version >= 14) then
gtk_adjustment_configure(Range^.adjustment, Position, Min, Max, SmallChange, LargeChange, PageSize)
else
begin
value := Position;
lower := Min;
upper := Max + PageSize;
step_increment := SmallChange;
page_increment := LargeChange;
page_size := PageSize;
with Range^.adjustment^ do
begin
value := Position;
lower := Min;
upper := Max;
step_increment := SmallChange;
page_increment := LargeChange;
page_size := PageSize;
end;
gtk_adjustment_changed(Range^.adjustment);
end;
gtk_adjustment_changed(Range^.adjustment);
end;
end;