fixed gtk critical on bring control back/front

git-svn-id: trunk@7886 -
This commit is contained in:
mattias 2005-10-02 11:40:41 +00:00
parent 0b40ab4bb7
commit c5d010ce1b
6 changed files with 50 additions and 23 deletions

View File

@ -4,15 +4,16 @@ object CodeExplorerDlg: TCodeExplorerDlg
ClientWidth = 400 ClientWidth = 400
OnCreate = CodeExplorerDlgCreate OnCreate = CodeExplorerDlgCreate
OnDestroy = CodeExplorerDlgDestroy OnDestroy = CodeExplorerDlgDestroy
PixelsPerInch = 90 PixelsPerInch = 112
HorzScrollBar.Page = 401 HorzScrollBar.Page = 399
VertScrollBar.Page = 301 VertScrollBar.Page = 299
Left = 290 Left = 290
Height = 300 Height = 300
Top = 163 Top = 163
Width = 400 Width = 400
object OkButton: TButton object OkButton: TButton
Anchors = [akRight, akBottom] Anchors = [akRight, akBottom]
BorderSpacing.InnerBorder = 2
Caption = 'OkButton' Caption = 'OkButton'
OnClick = OkButtonClick OnClick = OkButtonClick
TabOrder = 0 TabOrder = 0
@ -23,6 +24,7 @@ object CodeExplorerDlg: TCodeExplorerDlg
end end
object CancelButton: TButton object CancelButton: TButton
Anchors = [akRight, akBottom] Anchors = [akRight, akBottom]
BorderSpacing.InnerBorder = 2
Caption = 'CancelButton' Caption = 'CancelButton'
ModalResult = 2 ModalResult = 2
TabOrder = 1 TabOrder = 1
@ -59,6 +61,15 @@ object CodeExplorerDlg: TCodeExplorerDlg
Top = 11 Top = 11
Width = 354 Width = 354
end end
object FollowCursorCheckBox: TCheckBox
Caption = 'FollowCursorCheckBox'
TabOrder = 1
Visible = False
Left = 14
Height = 24
Top = 134
Width = 158
end
end end
end end
end end

View File

@ -4,19 +4,22 @@ LazarusResources.Add('TCodeExplorerDlg','FORMDATA',[
'TPF0'#16'TCodeExplorerDlg'#15'CodeExplorerDlg'#7'Caption'#6#15'CodeExplorerD' 'TPF0'#16'TCodeExplorerDlg'#15'CodeExplorerDlg'#7'Caption'#6#15'CodeExplorerD'
+'lg'#12'ClientHeight'#3','#1#11'ClientWidth'#3#144#1#8'OnCreate'#7#21'CodeEx' +'lg'#12'ClientHeight'#3','#1#11'ClientWidth'#3#144#1#8'OnCreate'#7#21'CodeEx'
+'plorerDlgCreate'#9'OnDestroy'#7#22'CodeExplorerDlgDestroy'#13'PixelsPerInch' +'plorerDlgCreate'#9'OnDestroy'#7#22'CodeExplorerDlgDestroy'#13'PixelsPerInch'
+#2'Z'#18'HorzScrollBar.Page'#3#145#1#18'VertScrollBar.Page'#3'-'#1#4'Left'#3 +#2'p'#18'HorzScrollBar.Page'#3#143#1#18'VertScrollBar.Page'#3'+'#1#4'Left'#3
+'"'#1#6'Height'#3','#1#3'Top'#3#163#0#5'Width'#3#144#1#0#7'TButton'#8'OkButt' +'"'#1#6'Height'#3','#1#3'Top'#3#163#0#5'Width'#3#144#1#0#7'TButton'#8'OkButt'
+'on'#7'Anchors'#11#7'akRight'#8'akBottom'#0#7'Caption'#6#8'OkButton'#7'OnCli' +'on'#7'Anchors'#11#7'akRight'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#2
+'ck'#7#13'OkButtonClick'#8'TabOrder'#2#0#4'Left'#3#143#0#6'Height'#2#25#3'To' +#7'Caption'#6#8'OkButton'#7'OnClick'#7#13'OkButtonClick'#8'TabOrder'#2#0#4'L'
+'p'#3#8#1#5'Width'#2'g'#0#0#7'TButton'#12'CancelButton'#7'Anchors'#11#7'akRi' +'eft'#3#143#0#6'Height'#2#25#3'Top'#3#8#1#5'Width'#2'g'#0#0#7'TButton'#12'Ca'
+'ght'#8'akBottom'#0#7'Caption'#6#12'CancelButton'#11'ModalResult'#2#2#8'TabO' +'ncelButton'#7'Anchors'#11#7'akRight'#8'akBottom'#0#25'BorderSpacing.InnerBo'
+'rder'#2#1#4'Left'#3#24#1#6'Height'#2#25#3'Top'#3#8#1#5'Width'#2'g'#0#0#9'TN' +'rder'#2#2#7'Caption'#6#12'CancelButton'#11'ModalResult'#2#2#8'TabOrder'#2#1
+'otebook'#12'MainNotebook'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akB' +#4'Left'#3#24#1#6'Height'#2#25#3'Top'#3#8#1#5'Width'#2'g'#0#0#9'TNotebook'#12
+'ottom'#0#9'PageIndex'#2#0#4'Left'#2#8#6'Height'#3#248#0#3'Top'#2#8#5'Width' +'MainNotebook'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#9'P'
+#3#128#1#0#5'TPage'#10'UpdatePage'#7'Caption'#6#10'UpdatePage'#11'ClientWidt' +'ageIndex'#2#0#4'Left'#2#8#6'Height'#3#248#0#3'Top'#2#8#5'Width'#3#128#1#0#5
+'h'#3'|'#1#12'ClientHeight'#3#218#0#4'Left'#2#2#6'Height'#3#218#0#3'Top'#2#28 +'TPage'#10'UpdatePage'#7'Caption'#6#10'UpdatePage'#11'ClientWidth'#3'|'#1#12
+#5'Width'#3'|'#1#0#11'TRadioGroup'#17'RefreshRadioGroup'#7'Caption'#6#17'Ref' +'ClientHeight'#3#218#0#4'Left'#2#2#6'Height'#3#218#0#3'Top'#2#28#5'Width'#3
+'reshRadioGroup'#13'Items.Strings'#1#6#6'Manual'#6#10'SwitchPage'#6#4'Idle'#0 +'|'#1#0#11'TRadioGroup'#17'RefreshRadioGroup'#7'Caption'#6#17'RefreshRadioGr'
+#11'ParentColor'#9#4'Left'#2#14#6'Height'#2'i'#3'Top'#2#11#5'Width'#3'b'#1#0 +'oup'#13'Items.Strings'#1#6#6'Manual'#6#10'SwitchPage'#6#4'Idle'#0#11'Parent'
+#0#0#0#0 +'Color'#9#4'Left'#2#14#6'Height'#2'i'#3'Top'#2#11#5'Width'#3'b'#1#0#0#9'TChe'
+'ckBox'#20'FollowCursorCheckBox'#7'Caption'#6#20'FollowCursorCheckBox'#8'Tab'
+'Order'#2#1#7'Visible'#8#4'Left'#2#14#6'Height'#2#24#3'Top'#3#134#0#5'Width'
+#3#158#0#0#0#0#0#0
]); ]);

View File

@ -36,7 +36,7 @@ interface
uses uses
Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs, Classes, SysUtils, LCLProc, LResources, Forms, Controls, Graphics, Dialogs,
Laz_XMLCfg, Buttons, ExtCtrls, FileUtil, Laz_XMLCfg, Buttons, ExtCtrls, FileUtil,
LazConf, IDEProcs, LazarusIDEStrConsts; LazConf, IDEProcs, LazarusIDEStrConsts, StdCtrls;
type type
{ TCodeExplorerOptions } { TCodeExplorerOptions }
@ -49,6 +49,7 @@ type
TCodeExplorerOptions = class(TPersistent) TCodeExplorerOptions = class(TPersistent)
private private
FFollowCursor: boolean;
FOptionsFilename: string; FOptionsFilename: string;
FRefresh: TCodeExplorerRefresh; FRefresh: TCodeExplorerRefresh;
public public
@ -63,11 +64,13 @@ type
public public
property Refresh: TCodeExplorerRefresh read FRefresh write FRefresh; property Refresh: TCodeExplorerRefresh read FRefresh write FRefresh;
property OptionsFilename: string read FOptionsFilename write FOptionsFilename; property OptionsFilename: string read FOptionsFilename write FOptionsFilename;
property FollowCursor: boolean read FFollowCursor write FFollowCursor;
end; end;
{ TCodeExplorerDlg } { TCodeExplorerDlg }
TCodeExplorerDlg = class(TForm) TCodeExplorerDlg = class(TForm)
FollowCursorCheckBox: TCheckBox;
MainNotebook: TNotebook; MainNotebook: TNotebook;
OkButton: TButton; OkButton: TButton;
CancelButton: TButton; CancelButton: TButton;
@ -135,7 +138,7 @@ constructor TCodeExplorerOptions.Create;
begin begin
FOptionsFilename:= FOptionsFilename:=
AppendPathDelim(GetPrimaryConfigPath)+'codeexploreroptions.xml'; AppendPathDelim(GetPrimaryConfigPath)+'codeexploreroptions.xml';
FRefresh:=cerDefault; Clear;
end; end;
destructor TCodeExplorerOptions.Destroy; destructor TCodeExplorerOptions.Destroy;
@ -146,6 +149,7 @@ end;
procedure TCodeExplorerOptions.Clear; procedure TCodeExplorerOptions.Clear;
begin begin
FRefresh:=cerDefault; FRefresh:=cerDefault;
FFollowCursor:=true;
end; end;
procedure TCodeExplorerOptions.Assign(Source: TPersistent); procedure TCodeExplorerOptions.Assign(Source: TPersistent);
@ -155,6 +159,7 @@ begin
if Source is TCodeExplorerOptions then begin if Source is TCodeExplorerOptions then begin
Src:=TCodeExplorerOptions(Source); Src:=TCodeExplorerOptions(Source);
FRefresh:=Src.Refresh; FRefresh:=Src.Refresh;
FFollowCursor:=Src.FollowCursor;
end else end else
inherited Assign(Source); inherited Assign(Source);
end; end;
@ -203,14 +208,18 @@ procedure TCodeExplorerOptions.LoadFromXMLConfig(XMLConfig: TXMLConfig;
const Path: string); const Path: string);
begin begin
Clear; Clear;
FRefresh:=CodeExplorerRefreshNameToEnum(XMLConfig.GetValue('Refresh/Value','')); FRefresh:=CodeExplorerRefreshNameToEnum(
XMLConfig.GetValue(Path+'Refresh/Value',''));
FFollowCursor:=XMLConfig.GetValue(Path+'FollowCursor',true);
end; end;
procedure TCodeExplorerOptions.SaveToXMLConfig(XMLConfig: TXMLConfig; procedure TCodeExplorerOptions.SaveToXMLConfig(XMLConfig: TXMLConfig;
const Path: string); const Path: string);
begin begin
XMLConfig.SetDeleteValue('Refresh/Value',CodeExplorerRefreshNames[FRefresh], XMLConfig.SetDeleteValue(Path+'Refresh/Value',
CodeExplorerRefreshNames[FRefresh],
CodeExplorerRefreshNames[cerDefault]); CodeExplorerRefreshNames[cerDefault]);
XMLConfig.SetDeleteValue(Path+'FollowCursor',FFollowCursor,true);
end; end;
{ TCodeExplorerDlg } { TCodeExplorerDlg }
@ -237,7 +246,7 @@ begin
else else
RefreshRadioGroup.ItemIndex:=1; RefreshRadioGroup.ItemIndex:=1;
end; end;
FollowCursorCheckBox.Checked:=Options.FollowCursor;
end; end;
procedure TCodeExplorerDlg.SaveFormToOptions; procedure TCodeExplorerDlg.SaveFormToOptions;
@ -247,6 +256,7 @@ begin
1: FOptions.Refresh:=cerSwitchEditorPage; 1: FOptions.Refresh:=cerSwitchEditorPage;
2: FOptions.Refresh:=cerOnIdle; 2: FOptions.Refresh:=cerOnIdle;
end; end;
Options.FollowCursor:=FollowCursorCheckBox.Checked;
end; end;
procedure TCodeExplorerDlg.CodeExplorerDlgCreate(Sender: TObject); procedure TCodeExplorerDlg.CodeExplorerDlgCreate(Sender: TObject);
@ -262,6 +272,7 @@ begin
Items[1]:=lisCEOWhenSwitchingFile; Items[1]:=lisCEOWhenSwitchingFile;
Items[2]:=lisCEOOnIdle; Items[2]:=lisCEOOnIdle;
end; end;
FollowCursorCheckBox.Caption:=lisCEFollowCursor;
end; end;
procedure TCodeExplorerDlg.CodeExplorerDlgDestroy(Sender: TObject); procedure TCodeExplorerDlg.CodeExplorerDlgDestroy(Sender: TObject);

View File

@ -73,7 +73,7 @@ type
procedure CodeTreeviewDblClick(Sender: TObject); procedure CodeTreeviewDblClick(Sender: TObject);
procedure CodeTreeviewDeletion(Sender: TObject; Node: TTreeNode); procedure CodeTreeviewDeletion(Sender: TObject; Node: TTreeNode);
procedure CodeTreeviewKeyUp(Sender: TObject; var Key: Word; procedure CodeTreeviewKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); Shift: TShiftState);
procedure JumpToMenuitemClick(Sender: TObject); procedure JumpToMenuitemClick(Sender: TObject);
procedure OptionsButtonClick(Sender: TObject); procedure OptionsButtonClick(Sender: TObject);
procedure RefreshButtonClick(Sender: TObject); procedure RefreshButtonClick(Sender: TObject);

View File

@ -2844,6 +2844,7 @@ resourcestring
lisCEONeverOnlyManually = 'Never, only manually'; lisCEONeverOnlyManually = 'Never, only manually';
lisCEOWhenSwitchingFile = 'When switching file in source editor'; lisCEOWhenSwitchingFile = 'When switching file in source editor';
lisCEOOnIdle = 'On idle'; lisCEOOnIdle = 'On idle';
lisCEFollowCursor = 'Follow cursor';
lisMenuLazDoc = 'LazDoc Editor'; lisMenuLazDoc = 'LazDoc Editor';
lisLazDocMainFormCaption = 'LazDoc editor'; lisLazDocMainFormCaption = 'LazDoc editor';

View File

@ -611,6 +611,7 @@ begin
Widget := GetWidgetWithWindow(AWincontrol.Handle); Widget := GetWidgetWithWindow(AWincontrol.Handle);
if Widget = nil then Exit; if Widget = nil then Exit;
if Widget^.Window=nil then exit;
case APosition of case APosition of
wszpBack: begin wszpBack: begin