Login Page - Create Account

Support Board


Date/Time: Sun, 24 Nov 2024 18:58:01 +0000



Post From: Most Pointer Events Not Detected

[2024-05-10 15:10:08]
User462086 - Posts: 196
Hi, the change to the minimum calling interval in v2636 didn't help migrating code from v2568 so I've been doing some testing that has yielded interesting results. For reference, the code used for the test study is below. It was compiled in each version tested.

When testing for detection of the pointer down events in 2636, initially the events were not detected. Setting the minimum calling interval to -1 remedied this (so I thought) and these events were detected again. Hooray!

After removing the test study, saving the test chart with the minimum calling interval set to -1, restarting SC, then adding the study to the same chart again, the pointer down events were no longer detected.

Opening the Chart Settings dialog, but changing nothing this time, and then pressing 'okay' magically fixed the issue: the pointer down events were detected once again.

Using the zip downloads, I found this behavior started in version 2575 (by testing 2634, 2577, 2576, 2575). In each of these tested versions, I had to open the Chart Settings dialog & press 'okay' before the pointer down events were detected.

Versions 2568, 2572, and 2574 detected the pointer down events as expected. No other versions were tested.

Thanks for your time.



#include "sierrachart.h"

SCDLLName("Test_ReceivePointerEvents")

SCSFExport scsf_Test_ReceivePointerEvents(SCStudyInterfaceRef sc){
  
  if (sc.SetDefaults){
  
    sc.GraphName         = "Test_ReceivePointerEvents";
    sc.GraphRegion         = 0;
    sc.AutoLoop         = 0;
    sc.SupportKeyboardModifierStates = 1;
    return;
  }
  
  int& pv_Counter = sc.GetPersistentInt(0); // disables aggregating of log messages
  
  if (sc.IsKeyPressed_Control){
    
    SCString DebugMessage;
    DebugMessage.Format( "sc.IsKeyPressed_Control: %d", pv_Counter++);
    sc.AddMessageToLog(DebugMessage, 0);
    
    sc.ReceivePointerEvents  = ACS_RECEIVE_POINTER_EVENTS_ALWAYS;
  }
  
  if (sc.PointerEventType == SC_POINTER_BUTTON_DOWN){
    
    SCString DebugMessage;
    DebugMessage.Format( "SC_POINTER_BUTTON_DOWN: %d", pv_Counter++);
    sc.AddMessageToLog(DebugMessage, 0);
    
    sc.ReceivePointerEvents  = ACS_RECEIVE_NO_POINTER_EVENTS;
  }
  
}