gtk2: remove Get/SetHiddenLCLObject and related code. The only place that was still being called is a dead code since at least 2003. Fixes issue #21021

git-svn-id: trunk@34592 -
This commit is contained in:
blikblum 2012-01-05 10:34:09 +00:00
parent 5a73f54727
commit 4e8a2856a5
3 changed files with 46 additions and 88 deletions

View File

@ -225,7 +225,7 @@ end;
function gtkRealizeAfterCB(Widget: PGtkWidget; Data: Pointer): GBoolean; cdecl;
var
WinWidgetInfo: PWidgetInfo;
HiddenLCLObject, LCLObject: TObject;
LCLObject: TObject;
NewEventMask: TGdkEventMask;
TheWinControl: TWinControl;
ClientWidget: PGtkWidget;
@ -239,65 +239,56 @@ begin
EventTrace('realizeafter', nil);
{$ENDIF}
HiddenLCLObject:=GetHiddenLCLObject(Widget);
if HiddenLCLObject=nil then begin
// this is a normal lcl wigdet
MainWidget:=GetMainWidget(Widget);
WinWidgetInfo:=GetWidgetInfo(MainWidget,true);
LCLObject:=GetLCLObject(MainWidget);
if (LCLObject<>nil) and (WinWidgetInfo<>nil) then begin
ClientWidget:=GetFixedWidget(Widget);
if (LCLObject is TWinControl) then
TheWinControl:=TWinControl(LCLObject)
else
TheWinControl:=nil;
MainWidget:=GetMainWidget(Widget);
WinWidgetInfo:=GetWidgetInfo(MainWidget,true);
LCLObject:=GetLCLObject(MainWidget);
if (LCLObject<>nil) and (WinWidgetInfo<>nil) then begin
ClientWidget:=GetFixedWidget(Widget);
if (LCLObject is TWinControl) then
TheWinControl:=TWinControl(LCLObject)
else
TheWinControl:=nil;
// set extra signal masks after the widget window is created
// define extra events we're interrested in
//write('GTKRealizeAfterCB ');
//if TheWinControl<>nil then DbgOut(' ',TheWinControl.Name,':',TheWinControl.ClassName,' ',DbgS(TheWinControl.Handle));
//DebugLn(' Widget=',DbgS(Widget),' Fixed=',DbgS(GetFixedWidget(Widget)),' Main=',DbgS(GetMainWidget(Widget)));
if (TheWinControl<>nil) then begin
//DebugLn(['gtkRealizeAfterCB ',GetWidgetDebugReport(Widget)]);
{$IFDEF DebugGDK}BeginGDKErrorTrap;{$ENDIF}
// set extra signal masks after the widget window is created
// define extra events we're interrested in
//write('GTKRealizeAfterCB ');
//if TheWinControl<>nil then DbgOut(' ',TheWinControl.Name,':',TheWinControl.ClassName,' ',DbgS(TheWinControl.Handle));
//DebugLn(' Widget=',DbgS(Widget),' Fixed=',DbgS(GetFixedWidget(Widget)),' Main=',DbgS(GetMainWidget(Widget)));
if (TheWinControl<>nil) then begin
//DebugLn(['gtkRealizeAfterCB ',GetWidgetDebugReport(Widget)]);
{$IFDEF DebugGDK}BeginGDKErrorTrap;{$ENDIF}
NewEventMask:=gdk_window_get_events(GetControlWindow(Widget))
or WinWidgetInfo^.EventMask;
gtk_widget_add_events(Widget,NewEventMask);
gdk_window_set_events(GetControlWindow(Widget),NewEventMask);
NewEventMask:=gdk_window_get_events(GetControlWindow(Widget))
if (ClientWidget<>nil) and (GetControlWindow(ClientWidget)<>nil)
and (GetControlWindow(ClientWidget)<>GetControlWindow(Widget)) then begin
//DebugLn(['gtkRealizeAfterCB ClientWindow<>Window']);
NewEventMask:=gdk_window_get_events(GetControlWindow(ClientWidget))
or WinWidgetInfo^.EventMask;
gtk_widget_add_events(Widget,NewEventMask);
gdk_window_set_events(GetControlWindow(Widget),NewEventMask);
if (ClientWidget<>nil) and (GetControlWindow(ClientWidget)<>nil)
and (GetControlWindow(ClientWidget)<>GetControlWindow(Widget)) then begin
//DebugLn(['gtkRealizeAfterCB ClientWindow<>Window']);
NewEventMask:=gdk_window_get_events(GetControlWindow(ClientWidget))
or WinWidgetInfo^.EventMask;
gtk_widget_add_events(ClientWidget,WinWidgetInfo^.EventMask);
gdk_window_set_events(GetControlWindow(ClientWidget),NewEventMask);
end;
//DebugLn('BBB1 ',DbgS(NewEventMask),8),' ',DbgS(Cardinal(gdk_window_get_events(Widget^.Window)));
{$IFDEF DebugGDK}EndGDKErrorTrap;{$ENDIF}
gtk_widget_add_events(ClientWidget,WinWidgetInfo^.EventMask);
gdk_window_set_events(GetControlWindow(ClientWidget),NewEventMask);
end;
if TheWinControl<>nil then
begin
TheWinControl.CNPreferredSizeChanged;
TGtkPrivateWidgetClass(TheWinControl.WidgetSetClass.WSPrivate).UpdateCursor(WinWidgetInfo);
ConnectInternalWidgetsSignals(MainWidget,TheWinControl);
if TheWinControl is TCustomPage then
UpdateNotebookPageTab(nil,TheWinControl);
if TheWinControl is TCustomForm then
SetFormShowInTaskbar(TCustomForm(TheWinControl),
TCustomForm(TheWinControl).ShowInTaskbar);
end;
//DebugLn('BBB1 ',DbgS(NewEventMask),8),' ',DbgS(Cardinal(gdk_window_get_events(Widget^.Window)));
{$IFDEF DebugGDK}EndGDKErrorTrap;{$ENDIF}
end;
end else begin
// this is a hidden child widget of a lcl widget
if HiddenLCLObject is TWinControl then
ConnectInternalWidgetsSignals(Widget,TWinControl(HiddenLCLObject));
if TheWinControl<>nil then
begin
TheWinControl.CNPreferredSizeChanged;
TGtkPrivateWidgetClass(TheWinControl.WidgetSetClass.WSPrivate).UpdateCursor(WinWidgetInfo);
ConnectInternalWidgetsSignals(MainWidget,TheWinControl);
if TheWinControl is TCustomPage then
UpdateNotebookPageTab(nil,TheWinControl);
if TheWinControl is TCustomForm then
SetFormShowInTaskbar(TCustomForm(TheWinControl),
TCustomForm(TheWinControl).ShowInTaskbar);
end;
end;
end;

View File

@ -3708,22 +3708,6 @@ begin
else Result := nil;
end;
{-------------------------------------------------------------------------------
Some need the HiddenLCLobject which created a parent of this widget.
MWE: is this obsolete ?
-------------------------------------------------------------------------------}
procedure SetHiddenLCLObject(const Widget: Pointer; const AnObject: TObject);
begin
if (Widget <> nil) then
gtk_object_set_data(Widget, 'LCLHiddenClass', Pointer(AnObject));
end;
function GetHiddenLCLObject(const Widget: Pointer): TObject;
begin
Result := TObject(gtk_object_get_data(Widget, 'LCLHiddenClass'));
end;
{-------------------------------------------------------------------------------
function GetNearestLCLObject(Widget: PGtkWidget): TObject;
@ -4927,13 +4911,6 @@ end;
procedure ConnectInternalWidgetsSignals(AWidget: PGtkWidget;
AWinControl: TWinControl);
function WidgetIsInternal(TheWidget: PGtkWidget): boolean;
begin
Result:=(TheWidget<>nil)
and (PGtkWidget(AWinControl.Handle)<>TheWidget)
and (gtk_object_get_data(PGtkObject(TheWidget), 'Main')=nil);
end;
procedure ConnectSignals(TheWidget: PGtkWidget); forward;
procedure ConnectChilds(TheWidget: PGtkWidget);
@ -4975,7 +4952,7 @@ procedure ConnectInternalWidgetsSignals(AWidget: PGtkWidget;
procedure ConnectSignals(TheWidget: PGtkWidget);
var
LCLObject, HiddenLCLObject: TObject;
LCLObject: TObject;
DesignSignalType: TDesignSignalType;
DesignFlags: TConnectSignalFlags;
begin
@ -4983,13 +4960,9 @@ procedure ConnectInternalWidgetsSignals(AWidget: PGtkWidget;
if TheWidget=nil then exit;
// check if TheWidget belongs to another LCL object
LCLObject:=GetLCLObject(TheWidget);
HiddenLCLObject:=GetHiddenLCLObject(TheWidget);
if (LCLObject<>nil) and (LCLObject<>AWinControl) then begin
exit;
end;
if (HiddenLCLObject<>nil) and (HiddenLCLObject<>AWinControl) then begin
exit;
end;
//if AWinControl is TListView then DebugLn('ConnectSignals B ',DbgS(TheWidget));
// connect signals needed for design mode:
@ -5008,10 +4981,6 @@ procedure ConnectInternalWidgetsSignals(AWidget: PGtkWidget;
DesignFlags);
end;
if WidgetIsInternal(TheWidget) then
// mark widget as 'hidden' connected
SetHiddenLCLObject(TheWidget,AWinControl);
// connect recursively ...
ConnectChilds(TheWidget);
end;

View File

@ -341,8 +341,6 @@ procedure DestroyWidget(Widget: PGtkWidget);
procedure SetLCLObject(const Widget: Pointer; const AnObject: TObject);
function GetLCLObject(const Widget: Pointer): TObject;
function GetNearestLCLObject(Widget: PGtkWidget): TObject;
procedure SetHiddenLCLObject(const Widget: Pointer; const AnObject: TObject);
function GetHiddenLCLObject(const Widget: Pointer): TObject;
function GetWinControlWidget(Child: PGtkWidget): PGtkWidget;
function GetWinControlFixedWidget(Child: PGtkWidget): PGtkWidget;
function FindFixedChildListItem(ParentFixed: PGtkFixed; Child: PGtkWidget): PGList;