fixed gtk2 scrolling from Andrew Haines

git-svn-id: trunk@8222 -
This commit is contained in:
mattias 2005-11-26 08:24:01 +00:00
parent cbe200a355
commit 07465b2a09
3 changed files with 23 additions and 87 deletions

View File

@ -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;

View File

@ -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

View File

@ -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;