mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 10:36:01 +02:00
fix gtk2 scrollbars from Jesus
git-svn-id: trunk@6782 -
This commit is contained in:
parent
dc9a14d438
commit
799a2c918f
@ -2422,199 +2422,204 @@ begin
|
|||||||
DeliverMessage(Data, MessI);
|
DeliverMessage(Data, MessI);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFNDEF GTK2}
|
{$IFDEF gtk1}
|
||||||
function gtk_range_get_update_policy(range: PGTKRange): TGtkUpdateType;
|
function gtk_range_get_update_policy(range: PGTKRange): TGtkUpdateType;
|
||||||
begin
|
begin
|
||||||
result := policy(Range^)
|
result := policy(Range^)
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
{$IFDEF VerboseGtkScrollbars}
|
function get_gtk_scroll_type(range: PGTKRange): TGtkScrollType;
|
||||||
procedure DebugScrollEvent(Range: PgtkRange);
|
{$IFNDEF gtk1}
|
||||||
|
type
|
||||||
|
TUnOpaqueTimer=record
|
||||||
|
timeout_id: guint;
|
||||||
|
ScrollType: TGTkScrollType;
|
||||||
|
end;
|
||||||
|
PUnOpaqueTimer=^TUnopaqueTimer;
|
||||||
|
{$ENDIF}
|
||||||
|
begin
|
||||||
|
{$IFDEF gtk1}
|
||||||
|
Result :=Scroll_type(Range^);
|
||||||
|
{$ELSE}
|
||||||
|
if (gtk_major_version=2) and (gtk_minor_version<6) and
|
||||||
|
(Range^.Timer<>nil) then
|
||||||
|
{$warning gtk2 pre gtk2.6 ONLY, tested gtk2.0}
|
||||||
|
Result := PUnOpaqueTimer(Range^.Timer)^.ScrollType
|
||||||
|
else
|
||||||
|
Result := GTK_SCROLL_NONE;
|
||||||
|
{$ENDIF}
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$IFDEF VerboseGtkScrollbars}
|
||||||
|
procedure DebugScrollStyle(Scroll: LongInt);
|
||||||
begin
|
begin
|
||||||
DbgOut('BUTTON=');
|
|
||||||
case Range^.Button of
|
|
||||||
1: DbgOut('LEFT ');
|
|
||||||
2: DbgOut('CENTER ');
|
|
||||||
3: DbgOut('RIGHT ');
|
|
||||||
else DbgOut(IntToStr(Range^.Button), ' -> ? ');
|
|
||||||
end;
|
|
||||||
DbgOut('CLICK_CHILD=');
|
|
||||||
case click_child(Range^) of
|
|
||||||
1: DbgOut('TROUGH ');
|
|
||||||
2: DbgOut('SLIDER ');
|
|
||||||
3: DbgOut('STEP_FORW ');
|
|
||||||
4: DbgOut('STEP_BACK ');
|
|
||||||
else DbgOut(IntToStr(click_child(range^)), ' -> ? ');
|
|
||||||
end;
|
|
||||||
DbgOut('IN_CHILD=');
|
|
||||||
case in_child(range^) of
|
|
||||||
1: DbgOut('TROUGH ');
|
|
||||||
2: DbgOut('SLIDER ');
|
|
||||||
3: DbgOut('STEP_FORW ');
|
|
||||||
4: DbgOut('STEP_BACK ');
|
|
||||||
else DbgOut(IntToStr(in_child(Range^)), ' -> ? ');
|
|
||||||
end;
|
|
||||||
DbgOut('TYPE=');
|
DbgOut('TYPE=');
|
||||||
case Scroll_Type(Range^) of
|
case Scroll of
|
||||||
GTK_SCROLL_NONE: DbgOut('GTK_SCROLL_NONE ');
|
GTK_SCROLL_NONE: DbgOut('GTK_SCROLL_NONE ');
|
||||||
GTK_SCROLL_STEP_BACKWARD: DbgOut('GTK_SCROLL_STEP_BACKWARD ');
|
GTK_SCROLL_STEP_BACKWARD: DbgOut('GTK_SCROLL_STEP_BACKWARD ');
|
||||||
GTK_SCROLL_STEP_FORWARD: DbgOut('GTK_SCROLL_STEP_FORWARD ');
|
GTK_SCROLL_STEP_FORWARD: DbgOut('GTK_SCROLL_STEP_FORWARD ');
|
||||||
GTK_SCROLL_PAGE_BACKWARD: DbgOut('GTK_SCROLL_PAGE_BACKWARD ');
|
GTK_SCROLL_PAGE_BACKWARD: DbgOut('GTK_SCROLL_PAGE_BACKWARD ');
|
||||||
GTK_SCROLL_PAGE_FORWARD: DbgOut('GTK_SCROLL_PAGE_FORWARD ');
|
GTK_SCROLL_PAGE_FORWARD: DbgOut('GTK_SCROLL_PAGE_FORWARD ');
|
||||||
GTK_SCROLL_JUMP: DbgOut('GTK_SCROLL_JUMP ');
|
GTK_SCROLL_JUMP: DbgOut('GTK_SCROLL_JUMP ');
|
||||||
else DbgOut(IntToStr(Scroll_Type(Range^)), '->?');
|
{$ifdef gtk2}
|
||||||
|
GTK_SCROLL_STEP_UP: DbgOut('GTK_SCROLL_STEP_UP');
|
||||||
|
GTK_SCROLL_STEP_DOWN: DbgOut('GTK_SCROLL_STEP_DOWN');
|
||||||
|
GTK_SCROLL_PAGE_UP: DbgOut('GTK_SCROLL_PAGE_UP');
|
||||||
|
GTK_SCROLL_PAGE_DOWN: DbgOut('GTK_SCROLL_PAGE_DOWN');
|
||||||
|
GTK_SCROLL_STEP_LEFT: DbgOut('GTK_SCROLL_STEP_LEFT');
|
||||||
|
GTK_SCROLL_STEP_RIGHT: DbgOut('GTK_SCROLL_STEP_RIGHT');
|
||||||
|
GTK_SCROLL_PAGE_LEFT: DbgOut('GTK_SCROLL_PAGE_LEFT');
|
||||||
|
GTK_SCROLL_PAGE_RIGHT: DbgOut('GTK_SCROLL_PAGE_RIGHT');
|
||||||
|
GTK_SCROLL_START: DbgOut('GTK_SCROLL_START');
|
||||||
|
GTK_SCROLL_END: DbgOut('GTK_SCROLL_END');
|
||||||
|
{$endif}
|
||||||
|
else
|
||||||
|
DbgOut(IntToStr(Scroll), '->?');
|
||||||
end;
|
end;
|
||||||
DbgOut('OLD_VALUE=', IntToStr(Round(Range^.old_value)),' ');
|
|
||||||
Debugln;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure DebugPolicy(Policy: TGtkUpdateType);
|
|
||||||
begin
|
|
||||||
DbgOut('POLICY=');
|
|
||||||
case policy of
|
|
||||||
GTK_UPDATE_CONTINUOUS: DbgOut('GTK_UPDATE_CONTINUOUS');
|
|
||||||
GTK_UPDATE_DISCONTINUOUS: DbgOut('GTK_UPDATE_DISCONTINUOUS');
|
|
||||||
GTK_UPDATE_DELAYED: DbgOut('GTK_UPDATE_DELAYED');
|
|
||||||
end;
|
|
||||||
DebugLn;
|
|
||||||
end;
|
end;
|
||||||
{$ENDIF VerboseGtkScrollbars}
|
{$ENDIF VerboseGtkScrollbars}
|
||||||
|
|
||||||
|
function ScrollTypeToSbCode(IsVertSB: boolean; ScrollType:TGtkScrollType;
|
||||||
|
UpdatePolicy:TGtkUpdateType): Integer;
|
||||||
|
begin
|
||||||
|
case ScrollType of
|
||||||
|
GTK_SCROLL_STEP_BACKWARD:
|
||||||
|
if IsVertSB then
|
||||||
|
Result := SB_LINEUP
|
||||||
|
else
|
||||||
|
Result := SB_LINELEFT;
|
||||||
|
GTK_SCROLL_STEP_FORWARD:
|
||||||
|
if IsVertSB then
|
||||||
|
Result := SB_LINEDOWN
|
||||||
|
else
|
||||||
|
Result := SB_LINERIGHT;
|
||||||
|
GTK_SCROLL_PAGE_BACKWARD:
|
||||||
|
if IsVertSB then
|
||||||
|
Result := SB_PAGEUP
|
||||||
|
else
|
||||||
|
Result := SB_PAGELEFT;
|
||||||
|
GTK_SCROLL_PAGE_FORWARD:
|
||||||
|
if IsVertSB then
|
||||||
|
Result := SB_PAGEDOWN
|
||||||
|
else
|
||||||
|
Result := SB_PAGERIGHT;
|
||||||
|
{$ifdef GTK2}
|
||||||
|
GTK_SCROLL_STEP_UP:
|
||||||
|
Result := SB_LINEUP;
|
||||||
|
GTK_SCROLL_STEP_DOWN:
|
||||||
|
Result := SB_LINEDOWN;
|
||||||
|
GTK_SCROLL_PAGE_UP:
|
||||||
|
Result := SB_PAGEUP;
|
||||||
|
GTK_SCROLL_PAGE_DOWN:
|
||||||
|
Result := SB_PAGEDOWN;
|
||||||
|
GTK_SCROLL_STEP_LEFT:
|
||||||
|
Result := SB_LINELEFT;
|
||||||
|
GTK_SCROLL_STEP_RIGHT:
|
||||||
|
Result := SB_LINERIGHT;
|
||||||
|
GTK_SCROLL_PAGE_LEFT:
|
||||||
|
Result := SB_PAGELEFT;
|
||||||
|
GTK_SCROLL_PAGE_RIGHT:
|
||||||
|
Result := SB_PAGERIGHT;
|
||||||
|
GTK_SCROLL_START:
|
||||||
|
if IsVertSB then
|
||||||
|
Result := SB_TOP
|
||||||
|
else
|
||||||
|
Result := SB_LEFT;
|
||||||
|
GTK_SCROLL_END:
|
||||||
|
if IsVertSB then
|
||||||
|
Result := SB_BOTTOM
|
||||||
|
else
|
||||||
|
Result := SB_RIGHT;
|
||||||
|
{$endif}
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
{$IFDEF VerboseGtkScrollbars}
|
||||||
|
debugln('ScrollTypeToSbCode: Scroll_type=', IntToStr(ScrollType));
|
||||||
|
{$Endif}
|
||||||
|
if UpdatePolicy=GTK_UPDATE_CONTINUOUS then
|
||||||
|
Result := SB_THUMBTRACK
|
||||||
|
else
|
||||||
|
Result := SB_THUMBPOSITION;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GTK26HScrollCB(Range:PGTKRAnge; Scroll: PGtkScrollType; 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);
|
||||||
|
ScrollBar := HWND(Range);
|
||||||
|
ScrollCode := ScrollTypeToSbCode(False, Scroll^,
|
||||||
|
gtk_range_get_update_policy(Range));
|
||||||
|
end;
|
||||||
|
DeliverMessage(Data, Msg);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function GTK26VScrollCB(Range:PGTKRAnge; Scroll: PGtkScrollType; 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);
|
||||||
|
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;
|
function GTKHScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl;
|
||||||
var
|
var
|
||||||
Msg: TLMHScroll;
|
Msg: TLMHScroll;
|
||||||
Scroll: PGtkRange;
|
Scroll: PGtkRange;
|
||||||
UpdatePolicy: TGtkUpdateType;
|
ScrollType: TGtkScrollType;
|
||||||
RangeClass: PgtkRangeClass;
|
|
||||||
begin
|
begin
|
||||||
Result := CallBackDefaultReturn;
|
Result := CallBackDefaultReturn;
|
||||||
Assert(False, Format('Trace:[GTKHScrollCB] Value: %d', [RoundToInt(Adjustment^.Value)]));
|
Assert(False, Format('Trace:[GTKHScrollCB] Value: %d', [RoundToInt(Adjustment^.Value)]));
|
||||||
Scroll := PgtkRange(gtk_object_get_data(PGTKObject(Adjustment), 'ScrollBar'));
|
Scroll := PgtkRange(gtk_object_get_data(PGTKObject(Adjustment), 'ScrollBar'));
|
||||||
if Scroll=nil then exit;
|
if Scroll<>nil then begin
|
||||||
{$ifdef gtk1}
|
Msg.Msg := LM_HSCROLL;
|
||||||
RangeClass := PgtkRangeClass(PgtkObject(Scroll)^.klass);
|
with Msg do begin
|
||||||
{$else}
|
pos := Round(Adjustment^.Value);
|
||||||
RangeClass := GTK_OBJECT_GET_CLASS(Scroll);
|
ScrollBar := HWND(Scroll);
|
||||||
{$endif}
|
ScrollType := get_gtk_scroll_type(Scroll);
|
||||||
UpdatePolicy := gtk_range_get_update_policy(Scroll);
|
ScrollCode := ScrollTypeToSbCode(False, ScrollType,
|
||||||
//X := integer(gtk_object_get_data(PGtkObject(Scroll), 'FinalEvent'));
|
gtk_range_get_update_policy(Scroll));
|
||||||
//WriteLn('FINAL EVENT: ', X);
|
|
||||||
//BeginGDKErrorTrap;
|
|
||||||
//gdk_window_get_pointer(GetControlWindow(Scroll), @X, @Y, @Mask);
|
|
||||||
//EndGDKErrorTrap;
|
|
||||||
{$IFDEF VerboseGtkScrollbars}
|
|
||||||
DebugScrollEvent(Scroll);
|
|
||||||
DebugPolicy(UpdatePolicy);
|
|
||||||
{$ENDIF}
|
|
||||||
Msg.Msg := LM_HSCROLL;
|
|
||||||
with Msg do begin
|
|
||||||
pos := Round(Adjustment^.Value);
|
|
||||||
ScrollBar := HWND(Scroll);
|
|
||||||
{$ifdef gtk1}
|
|
||||||
case Scroll_type(Scroll^) of
|
|
||||||
GTK_SCROLL_NONE:
|
|
||||||
begin
|
|
||||||
ScrollCode := SB_THUMBTRACK;
|
|
||||||
if click_child(scroll^) = RangeClass^.Slider then
|
|
||||||
if UpdatePolicy <> GTK_UPDATE_CONTINUOUS then
|
|
||||||
ScrollCode := SB_THUMBPOSITION;
|
|
||||||
end;
|
|
||||||
GTK_SCROLL_STEP_BACKWARD:
|
|
||||||
ScrollCode := SB_LINELEFT;
|
|
||||||
GTK_SCROLL_STEP_FORWARD:
|
|
||||||
ScrollCode := SB_LINERIGHT;
|
|
||||||
GTK_SCROLL_PAGE_BACKWARD:
|
|
||||||
ScrollCode := SB_PAGELEFT;
|
|
||||||
GTK_SCROLL_PAGE_FORWARD:
|
|
||||||
ScrollCode := SB_PAGERIGHT;
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
// GTK_SCROLL_JUMP and others not known?
|
|
||||||
{$IFDEF VerboseGtkScrollbars}
|
|
||||||
debugln('GTKVScrollCB: Scroll_type=', IntToStr(Scroll_type(Scroll^)));
|
|
||||||
{$Endif}
|
|
||||||
if UpdatePolicy=GTK_UPDATE_CONTINUOUS then
|
|
||||||
ScrollCode := SB_THUMBTRACK
|
|
||||||
else
|
|
||||||
ScrollCode := SB_THUMBPOSITION;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
{$else}
|
DeliverMessage(Data, Msg);
|
||||||
{$warning gtk2 TODO}
|
|
||||||
{$endif}
|
|
||||||
end;
|
end;
|
||||||
DeliverMessage(Data, Msg);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GTKVScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl;
|
||||||
function GTKVScrollCB(Adjustment: PGTKAdjustment;
|
|
||||||
data: GPointer): GBoolean; cdecl;
|
|
||||||
var
|
var
|
||||||
Msg: TLMVScroll;
|
Msg: TLMVScroll;
|
||||||
Scroll: PGtkRange;
|
Scroll: PGtkRange;
|
||||||
UpdatePolicy: TGtkUpdateType;
|
ScrollType: TGtkScrollType;
|
||||||
RangeClass: PgtkRangeClass;
|
|
||||||
begin
|
begin
|
||||||
Result := CallBackDefaultReturn;
|
Result := CallBackDefaultReturn;
|
||||||
Assert(False, Format('Trace:[GTKVScrollCB] Value: %d', [RoundToInt(Adjustment^.Value)]));
|
Assert(False, Format('Trace:[GTKVScrollCB] Value: %d', [RoundToInt(Adjustment^.Value)]));
|
||||||
Scroll := PgtkRange(gtk_object_get_data(PGTKObject(Adjustment), 'ScrollBar'));
|
Scroll := PgtkRange(gtk_object_get_data(PGTKObject(Adjustment), 'ScrollBar'));
|
||||||
if (Scroll=nil) then exit;
|
if Scroll<>nil then begin
|
||||||
{$ifdef gtk1}
|
Msg.Msg := LM_VSCROLL;
|
||||||
RangeClass := PgtkRangeClass(PgtkObject(Scroll)^.klass);
|
with Msg do begin
|
||||||
{$else}
|
pos := Round(Adjustment^.Value);
|
||||||
RangeClass := GTK_OBJECT_GET_CLASS(Scroll);
|
ScrollBar := HWND(Scroll);
|
||||||
{$endif}
|
ScrollType := get_gtk_scroll_type(Scroll);
|
||||||
UpdatePolicy := gtk_range_get_update_policy(Scroll);
|
ScrollCode := ScrollTypeToSbCode(True, ScrollType,
|
||||||
//UpdatePolicy := TGtkUpdateType( gtk_object_get_data(PgtkObject(Scroll), 'UpdatePolicy'));
|
gtk_range_get_update_policy(Scroll));
|
||||||
//WriteLn('FINAL EVENT: ', integer(gtk_object_get_data(PGtkObject(Scroll), 'FinalEvent')));
|
|
||||||
//BeginGDKErrorTrap;
|
|
||||||
//gdk_window_get_pointer(GetControlWindow(Scroll), @X, @Y, @Mask);
|
|
||||||
//EndGDKErrorTrap;
|
|
||||||
{$IFDEF VerboseGtkScrollbars}
|
|
||||||
DebugScrollEvent(Scroll);
|
|
||||||
DebugPolicy(UpdatePolicy);
|
|
||||||
{$ENDIF}
|
|
||||||
Msg.Msg := LM_VSCROLL;
|
|
||||||
with Msg do begin
|
|
||||||
pos := Round(Adjustment^.Value);
|
|
||||||
ScrollBar := HWND(Scroll);
|
|
||||||
{$ifdef gtk1}
|
|
||||||
case Scroll_type(Scroll^) of
|
|
||||||
GTK_SCROLL_NONE:
|
|
||||||
begin
|
|
||||||
ScrollCode := SB_THUMBTRACK;
|
|
||||||
if click_child(scroll^) = RangeClass^.Slider then
|
|
||||||
if UpdatePolicy <> GTK_UPDATE_CONTINUOUS then
|
|
||||||
ScrollCode := SB_THUMBPOSITION;
|
|
||||||
end;
|
|
||||||
GTK_SCROLL_STEP_BACKWARD:
|
|
||||||
ScrollCode := SB_LINEUP;
|
|
||||||
GTK_SCROLL_STEP_FORWARD:
|
|
||||||
ScrollCode := SB_LINEDOWN;
|
|
||||||
GTK_SCROLL_PAGE_BACKWARD:
|
|
||||||
ScrollCode := SB_PAGEUP;
|
|
||||||
GTK_SCROLL_PAGE_FORWARD:
|
|
||||||
ScrollCode := SB_PAGEDOWN;
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
// GTK_SCROLL_JUMP and others not known?
|
|
||||||
{$IFDEF VerboseGtkScrollbars}
|
|
||||||
debugln('GTKVScrollCB: Scroll_type=', IntToStr(Scroll_type(Scroll^)));
|
|
||||||
{$ENDIF}
|
|
||||||
if UpdatePolicy=GTK_UPDATE_CONTINUOUS then
|
|
||||||
ScrollCode := SB_THUMBTRACK
|
|
||||||
else
|
|
||||||
ScrollCode := SB_THUMBPOSITION;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
{$else}
|
DeliverMessage(Data, Msg);
|
||||||
{$warning gtk2 TODO}
|
|
||||||
{$endif}
|
|
||||||
end;
|
end;
|
||||||
DeliverMessage(Data, Msg);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Function: GTKKeySnooper
|
Function: GTKKeySnooper
|
||||||
Params: Widget: The widget for which this event is fired
|
Params: Widget: The widget for which this event is fired
|
||||||
@ -2986,6 +2991,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.262 2005/02/15 10:33:31 mattias
|
||||||
|
fix gtk2 scrollbars from Jesus
|
||||||
|
|
||||||
Revision 1.261 2005/02/05 16:09:52 marc
|
Revision 1.261 2005/02/05 16:09:52 marc
|
||||||
* first 64bit changes
|
* first 64bit changes
|
||||||
|
|
||||||
|
@ -3110,7 +3110,7 @@ procedure TGtkWidgetSet.SetCallback(const AMsg: LongInt; const AGTKObject: PGTKO
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
gObject, gFixed, gCore, Scroll: PGTKObject;
|
gObject, gFixed, gCore, Scroll, Adjustment: PGTKObject;
|
||||||
begin
|
begin
|
||||||
if AGTKObject = nil
|
if AGTKObject = nil
|
||||||
then gObject := ObjectToGTKObject(ALCLObject)
|
then gObject := ObjectToGTKObject(ALCLObject)
|
||||||
@ -3469,46 +3469,54 @@ begin
|
|||||||
|
|
||||||
LM_HSCROLL:
|
LM_HSCROLL:
|
||||||
begin
|
begin
|
||||||
//if ALCLObject is TCustomListView
|
if (gtk_major_version>=2)and(gtk_minor_version>=6) then begin
|
||||||
//then begin
|
if ALCLObject is TScrollBar then
|
||||||
// ConnectSenderSignal(gObject, 'scroll-horizontal', @gtkLVHScroll);
|
Scroll := PGtkObject(@PgtkhScrollBar(gObject)^.Scrollbar.Range)
|
||||||
//end
|
else begin
|
||||||
//else begin
|
if ALCLObject is TScrollBox then
|
||||||
If ALCLObject is TScrollBar then
|
gObject := gtk_object_get_data(gObject, odnScrollArea);
|
||||||
ConnectSenderSignal(
|
Scroll := PgtkObject(PGtkScrolledWindow(gObject)^.HScrollBar);
|
||||||
PGTKObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment),
|
end;
|
||||||
'value-changed', @GTKHScrollCB)
|
ConnectSenderSignal(Scroll,'changed-value', @GTK26HScrollCB);
|
||||||
else If ALCLObject is TScrollBox then begin
|
end else begin
|
||||||
Scroll := gtk_object_get_data(gObject, odnScrollArea);
|
if ALCLObject is TScrollBar then
|
||||||
ConnectSenderSignal(PGTKObject(gtk_scrolled_window_get_hadjustment(
|
Adjustment := PgtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment)
|
||||||
PGTKScrolledWindow(Scroll))), 'value-changed', @GTKHScrollCB);
|
else if ALCLObject is TScrollBox then begin
|
||||||
end
|
Scroll := gtk_object_get_data(gObject, odnScrollArea);
|
||||||
else
|
Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment(
|
||||||
ConnectSenderSignal(PGTKObject(gtk_scrolled_window_get_hadjustment(
|
PGTKScrolledWindow(Scroll)));
|
||||||
PGTKScrolledWindow(gObject))), 'value-changed', @GTKHScrollCB);
|
end
|
||||||
//end;
|
else
|
||||||
|
Adjustment := PgtkObject(gtk_scrolled_window_get_hadjustment(
|
||||||
|
PGTKScrolledWindow(gObject)));
|
||||||
|
ConnectSenderSignal(Adjustment, 'value-changed', @GTKHScrollCB);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_VSCROLL:
|
LM_VSCROLL:
|
||||||
begin
|
begin
|
||||||
//if ALCLObject is TCustomListView
|
if (gtk_major_version>=2)and(gtk_minor_version>=6) then begin
|
||||||
//then begin
|
if ALCLObject is TScrollBar then
|
||||||
// ConnectSenderSignal(gObject, 'scroll-vertical', @gtkLVVScroll);
|
Scroll := PGtkObject(@PgtkhScrollBar(gObject)^.Scrollbar.Range)
|
||||||
//end
|
else begin
|
||||||
//else begin
|
if ALCLObject is TScrollBox then
|
||||||
If ALCLObject is TScrollBar then
|
gObject := gtk_object_get_data(gObject, odnScrollArea);
|
||||||
ConnectSenderSignal(
|
Scroll := PGtkObject(PGtkScrolledWindow(gObject)^.VScrollBar);
|
||||||
PGTKObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment),
|
end;
|
||||||
'value-changed', @GTKVScrollCB)
|
connectSenderSignal(Scroll,'changed-value', @GTK26VScrollCB);
|
||||||
else If ALCLObject is TScrollBox then begin
|
end else begin
|
||||||
Scroll := gtk_object_get_data(gObject, odnScrollArea);
|
if ALCLObject is TScrollBar then
|
||||||
ConnectSenderSignal(PGTKObject(gtk_scrolled_window_get_vadjustment(
|
Adjustment := PGtkObject(PgtkhScrollBar(gObject)^.Scrollbar.Range.Adjustment)
|
||||||
PGTKScrolledWindow(Scroll))), 'value-changed', @GTKVScrollCB);
|
else if ALCLObject is TScrollBox then begin
|
||||||
end
|
Scroll := gtk_object_get_data(gObject, odnScrollArea);
|
||||||
else
|
Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment(
|
||||||
ConnectSenderSignal(PGTKObject(gtk_scrolled_window_get_vadjustment(
|
PGTKScrolledWindow(Scroll)));
|
||||||
PGTKScrolledWindow(gObject))), 'value-changed', @GTKVScrollCB);
|
end
|
||||||
//end;
|
else
|
||||||
|
Adjustment := PGtkObject(gtk_scrolled_window_get_vadjustment(
|
||||||
|
PGTKScrolledWindow(gObject)));
|
||||||
|
ConnectSenderSignal(Adjustment, 'value-changed', @GTKVScrollCB);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_YEARCHANGED : //calendar
|
LM_YEARCHANGED : //calendar
|
||||||
@ -7000,6 +7008,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.625 2005/02/15 10:33:31 mattias
|
||||||
|
fix gtk2 scrollbars from Jesus
|
||||||
|
|
||||||
Revision 1.624 2005/02/05 16:09:52 marc
|
Revision 1.624 2005/02/05 16:09:52 marc
|
||||||
* first 64bit changes
|
* first 64bit changes
|
||||||
|
|
||||||
|
@ -202,6 +202,10 @@ function gtkFocusInNotifyCB (widget: PGtkWidget; event: PGdkEvent;
|
|||||||
data: gpointer): GBoolean; cdecl;
|
data: gpointer): GBoolean; cdecl;
|
||||||
function gtkFocusOutNotifyCB (widget: PGtkWidget; event: PGdkEvent;
|
function gtkFocusOutNotifyCB (widget: PGtkWidget; event: PGdkEvent;
|
||||||
data: gpointer): GBoolean; cdecl;
|
data: gpointer): GBoolean; cdecl;
|
||||||
|
function GTK26HScrollCB(Range: PGTKRange; Scroll: PGtkScrollType; Value: gdouble;
|
||||||
|
data: gpointer): gboolean; cdecl;
|
||||||
|
function GTK26VScrollCB(Range: PGTKRange; Scroll: PGtkScrollType; Value: gdouble;
|
||||||
|
data: gpointer): gboolean; cdecl;
|
||||||
function GTKHScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl;
|
function GTKHScrollCB(Adjustment: PGTKAdjustment; data: GPointer): GBoolean; cdecl;
|
||||||
function GTKVScrollCB(Adjustment: PGTKAdjustment;
|
function GTKVScrollCB(Adjustment: PGTKAdjustment;
|
||||||
data: GPointer): GBoolean; cdecl;
|
data: GPointer): GBoolean; cdecl;
|
||||||
|
Loading…
Reference in New Issue
Block a user