mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-03 00:38:15 +02:00
fixed gtk2 scrolling from Andrew Haines
git-svn-id: trunk@8222 -
This commit is contained in:
parent
cbe200a355
commit
07465b2a09
@ -2622,45 +2622,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function GTK26HScrollCB(Range:PGTKRAnge; Scroll: TGtkScrollType;
|
||||
Value: gdouble;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
var
|
||||
Msg: TLMHScroll;
|
||||
begin
|
||||
Result := CallBackDefaultReturn;
|
||||
Msg.Msg := LM_HSCROLL;
|
||||
with Msg do begin
|
||||
Pos := Round(Range^.Adjustment^.Value);
|
||||
if Pos < High(SmallPos)
|
||||
then SmallPos := Pos
|
||||
else SmallPos := High(SmallPos);
|
||||
ScrollBar := HWND(Range);
|
||||
ScrollCode := ScrollTypeToSbCode(False, Scroll,
|
||||
gtk_range_get_update_policy(Range));
|
||||
end;
|
||||
DeliverMessage(Data, Msg);
|
||||
end;
|
||||
|
||||
function GTK26VScrollCB(Range:PGTKRAnge; Scroll: TGtkScrollType; Value: gdouble;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
var
|
||||
Msg: TLMVScroll;
|
||||
begin
|
||||
Result := CallBackDefaultReturn;
|
||||
Msg.Msg := LM_VSCROLL;
|
||||
with Msg do begin
|
||||
Pos := Round(Range^.Adjustment^.Value);
|
||||
if Pos < High(SmallPos)
|
||||
then SmallPos := Pos
|
||||
else SmallPos := High(SmallPos);
|
||||
ScrollBar := HWND(Range);
|
||||
ScrollCode := ScrollTypeToSbCode(True, Scroll,
|
||||
gtk_range_get_update_policy(Range));
|
||||
end;
|
||||
DeliverMessage(Data, Msg);
|
||||
end;
|
||||
|
||||
function GTKHScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl;
|
||||
var
|
||||
Msg: TLMHScroll;
|
||||
|
@ -3621,54 +3621,33 @@ begin
|
||||
|
||||
LM_HSCROLL:
|
||||
begin
|
||||
if (gtk_major_version>=2)and(gtk_minor_version>=6) then begin
|
||||
if ALCLObject is TScrollBar then
|
||||
Scroll := PGtkObject(@PgtkhScrollBar(gObject)^.Scrollbar.Range)
|
||||
else begin
|
||||
if ALCLObject is TScrollBox then
|
||||
gObject := gtk_object_get_data(gObject, odnScrollArea);
|
||||
Scroll := PgtkObject(PGtkScrolledWindow(gObject)^.HScrollBar);
|
||||
end;
|
||||
ConnectSenderSignal(Scroll,'change-value', @GTK26HScrollCB);
|
||||
end else begin
|
||||
if ALCLObject is TScrollBar then
|
||||
Adjustment := PgtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment)
|
||||
else if ALCLObject is TScrollBox then begin
|
||||
Scroll := gtk_object_get_data(gObject, odnScrollArea);
|
||||
Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment(
|
||||
PGTKScrolledWindow(Scroll)));
|
||||
end
|
||||
else
|
||||
Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment(
|
||||
PGTKScrolledWindow(gObject)));
|
||||
ConnectSenderSignal(Adjustment, 'value-changed', @GTKHScrollCB);
|
||||
end;
|
||||
if ALCLObject is TScrollBar then
|
||||
Adjustment := PgtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment)
|
||||
else if ALCLObject is TScrollBox then begin
|
||||
Scroll := gtk_object_get_data(gObject, odnScrollArea);
|
||||
Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment(
|
||||
PGTKScrolledWindow(Scroll)));
|
||||
end
|
||||
else
|
||||
Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment(
|
||||
PGTKScrolledWindow(gObject)));
|
||||
ConnectSenderSignal(Adjustment, 'value-changed', @GTKHScrollCB);
|
||||
end;
|
||||
|
||||
LM_VSCROLL:
|
||||
begin
|
||||
if (gtk_major_version>=2)and(gtk_minor_version>=6) then begin
|
||||
if ALCLObject is TScrollBar then
|
||||
Scroll := PGtkObject(@PgtkhScrollBar(gObject)^.Scrollbar.Range)
|
||||
else begin
|
||||
if ALCLObject is TScrollBox then
|
||||
gObject := gtk_object_get_data(gObject, odnScrollArea);
|
||||
Scroll := PGtkObject(PGtkScrolledWindow(gObject)^.VScrollBar);
|
||||
end;
|
||||
connectSenderSignal(Scroll,'change-value', @GTK26VScrollCB);
|
||||
end else begin
|
||||
if ALCLObject is TScrollBar then
|
||||
Adjustment := PGtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment)
|
||||
else if ALCLObject is TScrollBox then begin
|
||||
Scroll := gtk_object_get_data(gObject, odnScrollArea);
|
||||
Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment(
|
||||
PGTKScrolledWindow(Scroll)));
|
||||
end
|
||||
else
|
||||
Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment(
|
||||
PGTKScrolledWindow(gObject)));
|
||||
ConnectSenderSignal(Adjustment, 'value-changed', @GTKVScrollCB);
|
||||
end;
|
||||
if ALCLObject is TScrollBar then
|
||||
Adjustment := PGtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment)
|
||||
else if ALCLObject is TScrollBox then begin
|
||||
Scroll := gtk_object_get_data(gObject, odnScrollArea);
|
||||
Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment(
|
||||
PGTKScrolledWindow(Scroll)));
|
||||
end
|
||||
else
|
||||
Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment(
|
||||
PGTKScrolledWindow(gObject)));
|
||||
ConnectSenderSignal(Adjustment, 'value-changed', @GTKVScrollCB);
|
||||
ConnectSenderSignal(Adjustment, 'value-changed', @GTKVScrollCB);
|
||||
end;
|
||||
|
||||
LM_YEARCHANGED : //calendar
|
||||
|
@ -242,10 +242,6 @@ function gtkFocusInNotifyCB (widget: PGtkWidget; event: PGdkEvent;
|
||||
data: gpointer): GBoolean; cdecl;
|
||||
function gtkFocusOutNotifyCB (widget: PGtkWidget; event: PGdkEvent;
|
||||
data: gpointer): GBoolean; cdecl;
|
||||
function GTK26HScrollCB(Range: PGTKRange; Scroll: TGtkScrollType; Value: gdouble;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
function GTK26VScrollCB(Range: PGTKRange; Scroll: TGtkScrollType; Value: gdouble;
|
||||
data: gpointer): gboolean; cdecl;
|
||||
function GTKHScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl;
|
||||
function GTKVScrollCB(Adjustment: PGTKAdjustment;
|
||||
data: GPointer): GBoolean; cdecl;
|
||||
|
Loading…
Reference in New Issue
Block a user