[Lazarus] Form ordering problem on tiling window manager

Sven Barth pascaldragon at googlemail.com
Thu Jan 31 22:15:26 CET 2013


On 31.01.2013 09:39, Mattias Gaertner wrote:
> On Wed, 30 Jan 2013 21:24:38 +0100
> Sven Barth <pascaldragon at googlemail.com> 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


More information about the Lazarus mailing list