123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- MODULE DisplayRefresher; (** AUTHOR "staubesv"; PURPOSE "Force redraw of default viewport when receiving a X11 expore event"; *)
- IMPORT
- Modules, KernelLog, Inputs, WMMessages, WMWindowManager;
- VAR
- manager : WMWindowManager.WindowManager;
- viewport : WMWindowManager.ViewPort;
- (* Message preview handler for window manager. MUST NOT TRAP!!! *)
- PROCEDURE Handle(VAR msg : WMMessages.Message; VAR discard : BOOLEAN);
- VAR meta : BOOLEAN;
- BEGIN
- discard := FALSE;
- IF msg.msgType = WMMessages.MsgKey THEN
- meta := (msg.flags * Inputs.Meta # {}) OR ((msg.flags * Inputs.Alt # {}) & (msg.flags * Inputs.Shift # {}));
- IF ~meta & (msg.y = 0FFC6H) THEN
- manager.RefreshView(viewport);
- END;
- END;
- END Handle;
- PROCEDURE Install*;
- BEGIN (* load module *)
- END Install;
- PROCEDURE Cleanup;
- BEGIN
- IF (manager # NIL) THEN manager.RemoveMessagePreview(Handle); END;
- END Cleanup;
- BEGIN
- Modules.InstallTermHandler(Cleanup);
- manager := WMWindowManager.GetDefaultManager();
- viewport := WMWindowManager.GetDefaultView();
- IF (manager # NIL) & (viewport # NIL) THEN
- manager.InstallMessagePreview(Handle);
- KernelLog.String("DisplayRefresher installed.");
- ELSE
- KernelLog.String("DisplayRefresher installation failed (could not find window manager or viewport) ");
- END;
- KernelLog.Ln;
- END DisplayRefresher.
- DisplayRefresher.Install ~
- System.Free DisplayRefresher ~
|