aboutsummaryrefslogtreecommitdiffstatsci
path: root/Samples/DebugLogAnalyzer/src
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2021-04-10 02:13:37 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2021-04-10 02:13:37 +0200
commitba4e19bd5a09ac02a81db47f804af11ef2821014 (patch)
tree5b2c141d6815a5169c9e6ed827501fec5c3803d9 /Samples/DebugLogAnalyzer/src
parentae9c383ea4e3caccc768ca8caa7a0f6d8c875172 (diff)
DebugLogAnalyzer StickyMouse bug
Diffstat (limited to 'Samples/DebugLogAnalyzer/src')
-rw-r--r--Samples/DebugLogAnalyzer/src/DebugInterface.cs9
-rw-r--r--Samples/DebugLogAnalyzer/src/DebugInterfaceWidget.cs12
-rw-r--r--Samples/DebugLogAnalyzer/src/Extensions.cs3
3 files changed, 19 insertions, 5 deletions
diff --git a/Samples/DebugLogAnalyzer/src/DebugInterface.cs b/Samples/DebugLogAnalyzer/src/DebugInterface.cs
index 8300abb2..26a1eddf 100644
--- a/Samples/DebugLogAnalyzer/src/DebugInterface.cs
+++ b/Samples/DebugLogAnalyzer/src/DebugInterface.cs
@@ -32,6 +32,7 @@ namespace Crow
string source;
Action delRegisterForRepaint;//call RegisterForRepaint in the container widget (DebugInterfaceWidget)
Action<Exception> delSetCurrentException;
+ Func<object> delGetScreenCoordinate;
void interfaceThread () {
while (!Terminate) {
@@ -68,6 +69,7 @@ namespace Crow
Type t = w.GetType();
delRegisterForRepaint = (Action)Delegate.CreateDelegate(typeof(Action), w, t.GetMethod("RegisterForRepaint"));
delSetCurrentException = (Action<Exception>)Delegate.CreateDelegate(typeof(Action<Exception>), w, t.GetProperty("CurrentException").GetSetMethod());
+ delGetScreenCoordinate = (Func<object>)Delegate.CreateDelegate(typeof(Func<object>), w, t.GetMethod("GetScreenCoordinates"));
}
public void ResetDirtyState () {
IsDirty = false;
@@ -109,6 +111,11 @@ namespace Crow
g.RegisterForLayouting (LayoutingType.All);
RegisterClip (clientRectangle);
}
- }
+ }
+ public override void ForceMousePosition()
+ {
+ Point p = (Point)delGetScreenCoordinate();
+ Glfw.Glfw3.SetCursorPosition (WindowHandle, p.X + MousePosition.X, p.Y + MousePosition.Y);
+ }
}
} \ No newline at end of file
diff --git a/Samples/DebugLogAnalyzer/src/DebugInterfaceWidget.cs b/Samples/DebugLogAnalyzer/src/DebugInterfaceWidget.cs
index ee30d5ed..5432b05e 100644
--- a/Samples/DebugLogAnalyzer/src/DebugInterfaceWidget.cs
+++ b/Samples/DebugLogAnalyzer/src/DebugInterfaceWidget.cs
@@ -140,16 +140,19 @@ namespace Crow
public bool CrowDebuggerOK => initialized;
public bool CrowDebuggerNOK => !initialized;
- void notifyCrowDebuggerState () {
+ public string CrowDebuggerErrorMessage = "";
+ void notifyCrowDebuggerState (string errorMsg = null) {
NotifyValueChanged("CrowDebuggerOK", CrowDebuggerOK);
NotifyValueChanged("CrowDebuggerNOK", CrowDebuggerNOK);
+ CrowDebuggerErrorMessage = errorMsg;
+ NotifyValueChanged("CrowDebuggerErrorMessage", CrowDebuggerErrorMessage);
}
void tryStartDebugInterface () {
if (initialized)
return;
if (!File.Exists (crowDbgAssemblyLocation)) {
- notifyCrowDebuggerState();
+ notifyCrowDebuggerState($"Crow.dll for debugging file not found");
return;
}
@@ -161,7 +164,7 @@ namespace Crow
Type debuggerType = crowAssembly.GetType("Crow.DbgLogger");
if (!(bool)debuggerType.GetField("IsEnabled").GetValue(null)) {
- notifyCrowDebuggerState();
+ notifyCrowDebuggerState("Crow.dll must be compiled with CrowDebugLogEnabled='True'");
return;
}
@@ -201,6 +204,7 @@ namespace Crow
dbgIfaceType.GetMethod("Run").Invoke (dbgIFace, null);
initialized = true;
+ notifyCrowDebuggerState();
//Console.WriteLine($"DbgIFace: LoadCtx:{AssemblyLoadContext.GetLoadContext (dbgIFace.GetType().Assembly).Name})");
//}
@@ -298,5 +302,7 @@ namespace Crow
dla.Events = events;
}
}
+
+ public virtual object GetScreenCoordinates () => ScreenCoordinates(Slot).TopLeft;
}
} \ No newline at end of file
diff --git a/Samples/DebugLogAnalyzer/src/Extensions.cs b/Samples/DebugLogAnalyzer/src/Extensions.cs
index 6086384c..58047aaa 100644
--- a/Samples/DebugLogAnalyzer/src/Extensions.cs
+++ b/Samples/DebugLogAnalyzer/src/Extensions.cs
@@ -7,7 +7,8 @@ namespace DebugLogAnalyzer {
public static CommandGroup GetCommands (this System.IO.DirectoryInfo di) =>
new CommandGroup(
- new Command ("Set as root", ()=> {Program.CurrentProgramInstance.CurrentDir = di.FullName;}));
+ new Command ("Set as root", ()=> {Program.CurrentProgramInstance.CurrentDir = di.FullName;})
+ );
public static CommandGroup GetCommands (this System.IO.FileInfo fi) =>
new CommandGroup(
new Command ("Delete", (sender0) => {