Mattias Gaertner wrote 24 lines
On Wed, 30 Jan 2013 21:24:38 +0100
Sven Barth wrote:
> [...]
> But rather often something happens (I don't know what exactly and I'd
> like to find this out) and then I can click on the window and I use the
> switching window keyboard shortcut all I want and nothing happens. This
> even goes so far that modal dialogs (exception windows, open/save
> dialog) are opened behind(!) all other windows. So I first need to move
> the IDE and other windows out of the way before I can work in that
> dialog. I need to restart the IDE to revert to the original behavior
> again (for a while...).
> For now I've only achieved this problem with the IDE, not with a custom
> program. It would be nice if someone had an idea what I could test to
> narrow this problem down (the console output does not print anything
> useful).
If you have trouble with ShowModal, then it is a bug in the LCL gtk2
interface or below.
ShowModal had in the past some problems with other window managers
too.
Please update to 40085, compile with -dVerboseTransient, then run again.
When it happens again look at the end of the output for 'DEFINE
transient'.
I've done as you proposed (it's an IDE with virgin settings and without docking, just in case) and I've attached two debug outputs. In both cases I have started the IDE and opened the File Open dialog with Ctrl+O. In the "normal" case I've closed the dialog using "ESC" in the "problem" case I've first used "Win+k" to switch to a different window of the IDE (which wasn't moved to front of course, but the windows manager nevertheless marked the windows as focused) and then I've closed the dialog. After this forceful switch the behavior described in my original mail appeared (reproduceable).
I've also checked whether some output happens directly after using "Win+k", but this is not the case...
Regards,
Sven
-------------- next part --------------
SetPrimaryConfigPath NewValue="/home/sven/.lazarus/1.1-new" -> "/home/sven/.lazarus/1.1-new" TMainIDE.ParseCmdLineOptions:
PrimaryConfigPath="/home/sven/.lazarus/1.1-new/"
SecondaryConfigPath="/etc/lazarus"
Hinweis: CodeTools-Konfigurationsdatei nicht gefunden - verwende Voreinstellungen NOTE: help options config file not found - using defaults TGtk2WidgetSet.ShowHide HIDE TSplashForm
TGtk2WidgetSet.UntransientWindow 099B98E0 LCLObject=TSplashForm TGtk2WidgetSet.UpdateTransientWindows
TGtk2WidgetSet.UpdateTransientWindows Untransient 4 MainIDE:TMainIDEBar TGtk2WidgetSet.UpdateTransientWindows Untransient 3 Form1:TForm1 TGtk2WidgetSet.UpdateTransientWindows Untransient 2 SourceNotebook:TSourceNotebook TGtk2WidgetSet.UpdateTransientWindows Untransient 1 ObjectInspectorDlg:TObjectInspectorDlg TGtk2WidgetSet.UpdateTransientWindows Untransient 0 MessagesView:TMessagesView TGtk2WidgetSet.UntransientWindow 099B98E0 LCLObject=TSplashForm TGtk2WidgetSet.UpdateTransientWindows
TGtk2WidgetSet.UpdateTransientWindows Untransient 4 MainIDE:TMainIDEBar TGtk2WidgetSet.UpdateTransientWindows Untransient 3 Form1:TForm1 TGtk2WidgetSet.UpdateTransientWindows Untransient 2 SourceNotebook:TSourceNotebook TGtk2WidgetSet.UpdateTransientWindows Untransient 1 ObjectInspectorDlg:TObjectInspectorDlg TGtk2WidgetSet.UpdateTransientWindows Untransient 0 MessagesView:TMessagesView TGtkWidgetSet.GtkWindowShowModal nil
TGtk2WidgetSet.UpdateTransientWindows
Define TRANSIENT Parent=MessagesView:TMessagesView Index=4 Wnd=09BA9CD0 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=09BD2D80 Define TRANSIENT Parent=SourceNotebook:TSourceNotebook Index=3 Wnd=09BD2D80 Child=Form1:TForm1 Index=2 Wnd=09BE0F00 Define TRANSIENT Parent=Form1:TForm1 Index=2 Wnd=09BE0F00 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=1 Wnd=09BAA0B8 Define TRANSIENT Parent=ObjectInspectorDlg:TObjectInspectorDlg Index=1 Wnd=09BAA0B8 Child=MainIDE:TMainIDEBar Index=0 Wnd=099B9C50 Define TRANSIENT Parent=MainIDE:TMainIDEBar Index=0 Wnd=099B9C50 Child=:TOpenDialog Index=0 Wnd=09CA1820 Break old TRANSIENT i=5/6 OldTransientParent=00000000 Child=:TOpenDialog Index=0 Wnd=09CA1820 Break old TRANSIENT i=4/6 OldTransientParent=00000000 Child=MainIDE:TMainIDEBar Index=0 Wnd=099B9C50 Break old TRANSIENT i=3/6 OldTransientParent=00000000 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=1 Wnd=09BAA0B8 Break old TRANSIENT i=2/6 OldTransientParent=00000000 Child=Form1:TForm1 Index=2 Wnd=09BE0F00 Break old TRANSIENT i=1/6 OldTransientParent=00000000 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=09BD2D80 Set TRANSIENT i=1/6 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=09BD2D80 Parent=09BA9CD0 Set TRANSIENT i=2/6 Child=Form1:TForm1 Index=2 Wnd=09BE0F00 Parent=09BD2D80 Set TRANSIENT i=3/6 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=1 Wnd=09BAA0B8 Parent=09BE0F00 Set TRANSIENT i=4/6 Child=MainIDE:TMainIDEBar Index=0 Wnd=099B9C50 Parent=09BAA0B8 Set TRANSIENT i=5/6 Child=:TOpenDialog Index=0 Wnd=09CA1820 Parent=099B9C50 DestroyCommonDialogAddOns :TOpenDialog
DestroyCommonDialogAddOns :TOpenDialog
TGtk2WidgetSet.UntransientWindow 09CA1820 LCLObject=TOpenDialog TGtk2WidgetSet.UpdateTransientWindows
TGtk2WidgetSet.UpdateTransientWindows Untransient 4 MainIDE:TMainIDEBar TGtk2WidgetSet.UpdateTransientWindows Untransient 3 Form1:TForm1 TGtk2WidgetSet.UpdateTransientWindows Untransient 2 SourceNotebook:TSourceNotebook TGtk2WidgetSet.UpdateTransientWindows Untransient 1 ObjectInspectorDlg:TObjectInspectorDlg TGtk2WidgetSet.UpdateTransientWindows Untransient 0 MessagesView:TMessagesView
-------------- next part --------------
SetPrimaryConfigPath NewValue="/home/sven/.lazarus/1.1-new" -> "/home/sven/.lazarus/1.1-new" TMainIDE.ParseCmdLineOptions:
PrimaryConfigPath="/home/sven/.lazarus/1.1-new/"
SecondaryConfigPath="/etc/lazarus"
Hinweis: CodeTools-Konfigurationsdatei nicht gefunden - verwende Voreinstellungen NOTE: help options config file not found - using defaults TGtk2WidgetSet.ShowHide HIDE TSplashForm
TGtk2WidgetSet.UntransientWindow 0A0CD8E0 LCLObject=TSplashForm TGtk2WidgetSet.UpdateTransientWindows
TGtk2WidgetSet.UpdateTransientWindows Untransient 4 MainIDE:TMainIDEBar TGtk2WidgetSet.UpdateTransientWindows Untransient 3 Form1:TForm1 TGtk2WidgetSet.UpdateTransientWindows Untransient 2 SourceNotebook:TSourceNotebook TGtk2WidgetSet.UpdateTransientWindows Untransient 1 ObjectInspectorDlg:TObjectInspectorDlg TGtk2WidgetSet.UpdateTransientWindows Untransient 0 MessagesView:TMessagesView TGtk2WidgetSet.UntransientWindow 0A0CD8E0 LCLObject=TSplashForm TGtk2WidgetSet.UpdateTransientWindows
TGtk2WidgetSet.UpdateTransientWindows Untransient 4 MainIDE:TMainIDEBar TGtk2WidgetSet.UpdateTransientWindows Untransient 3 Form1:TForm1 TGtk2WidgetSet.UpdateTransientWindows Untransient 2 SourceNotebook:TSourceNotebook TGtk2WidgetSet.UpdateTransientWindows Untransient 1 ObjectInspectorDlg:TObjectInspectorDlg TGtk2WidgetSet.UpdateTransientWindows Untransient 0 MessagesView:TMessagesView TGtkWidgetSet.GtkWindowShowModal nil
TGtk2WidgetSet.UpdateTransientWindows
Define TRANSIENT Parent=MessagesView:TMessagesView Index=4 Wnd=0A2BDCD0 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=0A2E5D80 Define TRANSIENT Parent=SourceNotebook:TSourceNotebook Index=3 Wnd=0A2E5D80 Child=Form1:TForm1 Index=2 Wnd=0A2F4700 Define TRANSIENT Parent=Form1:TForm1 Index=2 Wnd=0A2F4700 Child=MainIDE:TMainIDEBar Index=1 Wnd=0A0CDC50 Define TRANSIENT Parent=MainIDE:TMainIDEBar Index=1 Wnd=0A0CDC50 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=0 Wnd=0A2BE0B8 Define TRANSIENT Parent=ObjectInspectorDlg:TObjectInspectorDlg Index=0 Wnd=0A2BE0B8 Child=:TOpenDialog Index=0 Wnd=0A3B4808 Break old TRANSIENT i=5/6 OldTransientParent=00000000 Child=:TOpenDialog Index=0 Wnd=0A3B4808 Break old TRANSIENT i=4/6 OldTransientParent=00000000 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=0 Wnd=0A2BE0B8 Break old TRANSIENT i=3/6 OldTransientParent=00000000 Child=MainIDE:TMainIDEBar Index=1 Wnd=0A0CDC50 Break old TRANSIENT i=2/6 OldTransientParent=00000000 Child=Form1:TForm1 Index=2 Wnd=0A2F4700 Break old TRANSIENT i=1/6 OldTransientParent=00000000 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=0A2E5D80 Set TRANSIENT i=1/6 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=0A2E5D80 Parent=0A2BDCD0 Set TRANSIENT i=2/6 Child=Form1:TForm1 Index=2 Wnd=0A2F4700 Parent=0A2E5D80 Set TRANSIENT i=3/6 Child=MainIDE:TMainIDEBar Index=1 Wnd=0A0CDC50 Parent=0A2F4700 Set TRANSIENT i=4/6 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=0 Wnd=0A2BE0B8 Parent=0A0CDC50 Set TRANSIENT i=5/6 Child=:TOpenDialog Index=0 Wnd=0A3B4808 Parent=0A2BE0B8 DestroyCommonDialogAddOns :TOpenDialog
TGtk2WidgetSet.UntransientWindow 0A3B4808 LCLObject=TOpenDialog TGtk2WidgetSet.UpdateTransientWindows
TGtk2WidgetSet.UpdateTransientWindows Untransient 4 MainIDE:TMainIDEBar TGtk2WidgetSet.UpdateTransientWindows Untransient 3 Form1:TForm1 TGtk2WidgetSet.UpdateTransientWindows Untransient 2 SourceNotebook:TSourceNotebook TGtk2WidgetSet.UpdateTransientWindows Untransient 1 ObjectInspectorDlg:TObjectInspectorDlg TGtk2WidgetSet.UpdateTransientWindows Untransient 0 MessagesView:TMessagesView