Table of Contents

Class FirefoxWindowProcessor

Namespace
Whim
Assembly
Whim.dll
Custom logic to handle events from Firefox.
public class FirefoxWindowProcessor : IWindowProcessor
Inheritance
FirefoxWindowProcessor
Implements
Inherited Members

Properties

Window

The window that this processor is for.
public IWindow Window { get; }

Property Value

IWindow

Methods

Create(IContext, IWindow)

Creates a new instance of the implementing class, if the given window matches the processor.
public static IWindowProcessor? Create(IContext ctx, IWindow window)

Parameters

ctx IContext
window IWindow

Returns

IWindowProcessor

ProcessEvent(uint, int, int, uint, uint)

Indicates whether the event should be ignored by Whim.
public WindowProcessorResult ProcessEvent(uint eventType, int idObject, int idChild, uint idEventThread, uint dwmsEventTime)

Parameters

eventType uint
idObject int
idChild int
idEventThread uint
dwmsEventTime uint

Returns

WindowProcessorResult

Remarks

Firefox has some irregular behavior:
  • Firefox will move a window after an interdeterminate timeout on startup [Source]
  • Firefox can perform actions 500ms after an event is received - e.g., after WindowMoved[Source]
  • Firefox will cloak the window when showing for the first time [Source]
To deal with these issues, we ignore all events until the first Windows.Win32.PInvoke.EVENT_OBJECT_CLOAKED event is received. If Firefox is already visible, we process all events.