[Lazarus] Form ordering problem on tiling window manager

Sven Barth pascaldragon at googlemail.com
Fri Feb 1 21:07:59 CET 2013


On 01.02.2013 02:36, Mattias Gaertner wrote:
> On Fri, 01 Feb 2013 01:44:17 +0100
> Hans-Peter Diettrich <DrDiettrich1 at aol.com> wrote:
>
>> Mattias Gaertner schrieb:
>>
>>> >From the output: The LCL gtk2 interfaces sets the right order.
>>> TOpenDialog on top of OI on top of MainIDE on Form1 on SrcNB on
>>> MsgView.
>>> So, the question is what does this WM need more than
>>> gtk_window_set_transient_for.
>>> http://developer.gimp.org/api/2.0/gtk/GtkWindow.html#gtk-window-set-transient-for
>>
>> A WM manages the windows, and a widgetset (gtk...) only can tell the WM
>> how his windows should be ordered. A WM may e.g. reorder the window
>> order on focus switch or other actions, without telling or asking the
>> widgetset.
>
> According to its source code, "awesome" knows
> the transient WM HINT.
> To make sure:
> Sven, please test if you can focus or bring to front other IDE windows
> while a modal dialog is open. Before the error happens and after.

The point is: I can focus other windows without problems (I'm using the 
"focus follows mouse cursor" feature), but I can't interact with those 
other non-modal windows and they also aren't brought to the front.

I've attached a log where I did the following:
* openen open file dialog
* focused object inspector by moving the mouse there
* closed the dialog
* moved the mouse (and thus the focus) onto the following windows (in 
that order)
   - object inspector
   - form
   - source editor
   - message window
* opened the dialog again
=> the dialog now appeared behind all other windows

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 0AFE38E0 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 0AFE38E0 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=0B1D3CD0 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=0B1FBD80
Define TRANSIENT  Parent=SourceNotebook:TSourceNotebook Index=3 Wnd=0B1FBD80 Child=Form1:TForm1 Index=2 Wnd=0B20A700
Define TRANSIENT  Parent=Form1:TForm1 Index=2 Wnd=0B20A700 Child=MainIDE:TMainIDEBar Index=1 Wnd=0AFE3C50
Define TRANSIENT  Parent=MainIDE:TMainIDEBar Index=1 Wnd=0AFE3C50 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=0 Wnd=0B1D40B8
Define TRANSIENT  Parent=ObjectInspectorDlg:TObjectInspectorDlg Index=0 Wnd=0B1D40B8 Child=:TOpenDialog Index=0 Wnd=0B2CB020
Break old TRANSIENT i=5/6 OldTransientParent=00000000 Child=:TOpenDialog Index=0 Wnd=0B2CB020
Break old TRANSIENT i=4/6 OldTransientParent=00000000 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=0 Wnd=0B1D40B8
Break old TRANSIENT i=3/6 OldTransientParent=00000000 Child=MainIDE:TMainIDEBar Index=1 Wnd=0AFE3C50
Break old TRANSIENT i=2/6 OldTransientParent=00000000 Child=Form1:TForm1 Index=2 Wnd=0B20A700
Break old TRANSIENT i=1/6 OldTransientParent=00000000 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=0B1FBD80
Set TRANSIENT i=1/6 Child=SourceNotebook:TSourceNotebook Index=3 Wnd=0B1FBD80 Parent=0B1D3CD0
Set TRANSIENT i=2/6 Child=Form1:TForm1 Index=2 Wnd=0B20A700 Parent=0B1FBD80
Set TRANSIENT i=3/6 Child=MainIDE:TMainIDEBar Index=1 Wnd=0AFE3C50 Parent=0B20A700
Set TRANSIENT i=4/6 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=0 Wnd=0B1D40B8 Parent=0AFE3C50
Set TRANSIENT i=5/6 Child=:TOpenDialog Index=0 Wnd=0B2CB020 Parent=0B1D40B8
DestroyCommonDialogAddOns :TOpenDialog
DestroyCommonDialogAddOns :TOpenDialog
TGtk2WidgetSet.UntransientWindow 0B2CB020 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
TGtkWidgetSet.GtkWindowShowModal nil
TGtk2WidgetSet.UpdateTransientWindows
Define TRANSIENT  Parent=MainIDE:TMainIDEBar Index=4 Wnd=0AFE3C50 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=3 Wnd=0B1D40B8
Define TRANSIENT  Parent=ObjectInspectorDlg:TObjectInspectorDlg Index=3 Wnd=0B1D40B8 Child=Form1:TForm1 Index=2 Wnd=0B20A700
Define TRANSIENT  Parent=Form1:TForm1 Index=2 Wnd=0B20A700 Child=SourceNotebook:TSourceNotebook Index=1 Wnd=0B1FBD80
Define TRANSIENT  Parent=SourceNotebook:TSourceNotebook Index=1 Wnd=0B1FBD80 Child=MessagesView:TMessagesView Index=0 Wnd=0B1D3CD0
Define TRANSIENT  Parent=MessagesView:TMessagesView Index=0 Wnd=0B1D3CD0 Child=:TOpenDialog Index=0 Wnd=0B2CB458
Break old TRANSIENT i=5/6 OldTransientParent=00000000 Child=:TOpenDialog Index=0 Wnd=0B2CB458
Break old TRANSIENT i=4/6 OldTransientParent=00000000 Child=MessagesView:TMessagesView Index=0 Wnd=0B1D3CD0
Break old TRANSIENT i=3/6 OldTransientParent=00000000 Child=SourceNotebook:TSourceNotebook Index=1 Wnd=0B1FBD80
Break old TRANSIENT i=2/6 OldTransientParent=00000000 Child=Form1:TForm1 Index=2 Wnd=0B20A700
Break old TRANSIENT i=1/6 OldTransientParent=00000000 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=3 Wnd=0B1D40B8
Set TRANSIENT i=1/6 Child=ObjectInspectorDlg:TObjectInspectorDlg Index=3 Wnd=0B1D40B8 Parent=0AFE3C50
Set TRANSIENT i=2/6 Child=Form1:TForm1 Index=2 Wnd=0B20A700 Parent=0B1D40B8
Set TRANSIENT i=3/6 Child=SourceNotebook:TSourceNotebook Index=1 Wnd=0B1FBD80 Parent=0B20A700
Set TRANSIENT i=4/6 Child=MessagesView:TMessagesView Index=0 Wnd=0B1D3CD0 Parent=0B1FBD80
Set TRANSIENT i=5/6 Child=:TOpenDialog Index=0 Wnd=0B2CB458 Parent=0B1D3CD0



More information about the Lazarus mailing list