Just starting out? Need help? Post your questions and find answers here.
useful
Enthusiast
Posts: 403 Joined: Fri Jul 19, 2013 7:36 am
Post
by useful » Sun May 12, 2024 9:55 am
I assumed that calling SCI SET MOD EVENT MASK with parameters other than the default SC_MODEVENTMASKALL 0x1FFFFF would reduce the number of messages that I am not interested in. But the result does not change, even if you specify 0 (no events are interesting)
Code: Select all
EnableExplicit
Declare SE(G.i,*SCN.SCNotification)
Declare WS()
#MW = 0
#MWT = "SciEdit 0.0.1"
#MWF = #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget
#GSC = 0
Global MWL.i = 100
Global MWT.i = 100
Global MWW.i = 800
Global MWH.i = 600
OpenWindow(#MW, MWL, MWT, MWW, MWH, #MWT, #MWF)
ScintillaGadget(#GSC, 0, 0, 0, 0, @SE())
BindEvent(#PB_Event_SizeWindow, @WS()) : WS()
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Debug Hex(ScintillaSendMessage(#GSC,#SCI_GETMODEVENTMASK))
ScintillaSendMessage(#GSC,#SCI_SETMODEVENTMASK, #SC_MOD_INSERTTEXT|#SC_MOD_DELETETEXT)
Debug Hex(ScintillaSendMessage(#GSC,#SCI_GETMODEVENTMASK))
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Procedure WS()
ResizeGadget(#GSC, 0, 0, WindowWidth(#MW), WindowHeight(#MW))
EndProcedure
Procedure SE(G.i,*SCN.SCNotification)
Select *SCN\nmhdr\code
Case #SCN_STYLENEEDED
Debug "STYLENEEDED"
Case #SCN_CHARADDED
Debug "CHARADDED"
Case #SCN_SAVEPOINTREACHED
Debug "SAVEPOINTREACHED"
Case #SCN_SAVEPOINTLEFT
Debug "SAVEPOINTLEFT"
Case #SCN_MODIFYATTEMPTRO
Debug "MODIFYATTEMPTRO"
Case #SCN_KEY
Debug "KEY"
Case #SCN_DOUBLECLICK
Debug "DOUBLECLICK"
Case #SCN_UPDATEUI
Debug "UPDATEUI"
Case #SCN_MODIFIED
Debug "MODIFIED"
Case #SCN_MACRORECORD
Debug "MACRORECORD"
Case #SCN_MARGINCLICK
Debug "MARGINCLICK"
Case #SCN_NEEDSHOWN
Debug "NEEDSHOWN"
Case #SCN_PAINTED
Debug "PAINTED"
Case #SCN_USERLISTSELECTION
Debug "USERLISTSELECTION"
Case #SCN_URIDROPPED
Debug "URIDROPPED"
Case #SCN_DWELLSTART
Debug "DWELLSTART"
Case #SCN_DWELLEND
Debug "DWELLEND"
Case #SCN_ZOOM
Debug "ZOOM"
Case #SCN_HOTSPOTCLICK
Debug "HOTSPOTCLICK"
Case #SCN_HOTSPOTDOUBLECLICK
Debug "HOTSPOTDOUBLECLICK"
Case #SCN_CALLTIPCLICK
Debug "CALLTIPCLICK"
Case #SCN_AUTOCSELECTION
Debug "AUTOCSELECTION"
Case #SCN_INDICATORCLICK
Debug "INDICATORCLICK"
Case #SCN_INDICATORRELEASE
Debug "INDICATORRELEASE"
Case #SCN_AUTOCCANCELLED
Debug "AUTOCCANCELLED"
Case #SCN_AUTOCCHARDELETED
Debug "AUTOCCHARDELETED"
Case #SCN_HOTSPOTRELEASECLICK
Debug "HOTSPOTRELEASECLICK"
Case #SCN_FOCUSIN
Debug "FOCUSIN"
Case #SCN_FOCUSOUT
Debug "FOCUSOUT"
Case #SCN_AUTOCCOMPLETED
Debug "AUTOCCOMPLETED"
Case #SCN_MARGINRIGHTCLICK
Debug "MARGINRIGHTCLICK"
Case #SCN_AUTOCSELECTIONCHANGE
Debug "AUTOCSELECTIONCHANGE"
Default
Debug -111
EndSelect
EndProcedure
Dawn will come inevitably.
infratec
Always Here
Posts: 7662 Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany
Post
by infratec » Sun May 12, 2024 10:16 am
You set SCI_GETMODEVENTMASK
So you can only check:
Code: Select all
Select *scn\modificationType
;Case #SC_MOD_NONE : Debug "SC_MOD_NONE"
Case #SC_MOD_INSERTTEXT : Debug "SC_MOD_INSERTTEXT"
Case #SC_MOD_DELETETEXT : Debug "SC_MOD_DELETETEXT"
Case #SC_MOD_CHANGESTYLE : Debug "SC_MOD_CHANGESTYLE"
Case #SC_MOD_CHANGEFOLD : Debug "SC_MOD_CHANGEFOLD"
Case #SC_PERFORMED_USER : Debug "SC_PERFORMED_USER"
Case #SC_PERFORMED_UNDO : Debug "SC_PERFORMED_UNDO"
Case #SC_PERFORMED_REDO : Debug "SC_PERFORMED_REDO"
Case #SC_MULTISTEPUNDOREDO : Debug "SC_MULTISTEPUNDOREDO"
Case #SC_LASTSTEPINUNDOREDO : Debug "SC_LASTSTEPINUNDOREDO"
Case #SC_MOD_CHANGEMARKER : Debug "SC_MOD_CHANGEMARKER"
Case #SC_MOD_BEFOREINSERT : Debug "SC_MOD_BEFOREINSERT"
Case #SC_MOD_BEFOREDELETE : Debug "SC_MOD_BEFOREDELETE"
Case #SC_MOD_CHANGEINDICATOR : Debug "SC_MOD_CHANGEINDICATOR"
Case #SC_MOD_CHANGELINESTATE : Debug "SC_MOD_CHANGELINESTATE"
Case #SC_MOD_CHANGETABSTOPS : Debug "SC_MOD_CHANGETABSTOPS"
Case #SC_MOD_LEXERSTATE : Debug "SC_MOD_LEXERSTATE"
Case #SC_MOD_CHANGEMARGIN : Debug "SC_MOD_CHANGEMARGIN"
Case #SC_MOD_CHANGEANNOTATION : Debug "SC_MOD_CHANGEANNOTATION"
Case #SC_MOD_INSERTCHECK : Debug "SC_MOD_INSERTCHECK"
Case #SC_MULTILINEUNDOREDO : Debug "SC_MULTILINEUNDOREDO"
Case #SC_STARTACTION : Debug "SC_STARTACTION"
Case #SC_MOD_CONTAINER : Debug "SC_MOD_CONTAINER"
EndSelect
useful
Enthusiast
Posts: 403 Joined: Fri Jul 19, 2013 7:36 am
Post
by useful » Sun May 12, 2024 10:25 am
I assumed that using a mask I could extinguish the generation of STYLENEEDED and PAINTED that I was not interested in, for example
sci_doc:
These messages set and get an event mask that determines which document change events are notified to the container with SCN_MODIFIED and SCEN_CHANGE. For example, a container may decide to see only notifications about changes to text and not styling changes by calling SCI_SETMODEVENTMASK(SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT).
p.s.
I realized my mistake. The mask controls only the granularity of the #SCN_MODIFIED event.
But the question remains: is there a more global event filtering mechanism?
Dawn will come inevitably.
skywalk
Addict
Posts: 4242 Joined: Wed Dec 23, 2009 10:14 pm
Location: Boston, MA
Post
by skywalk » Wed Aug 21, 2024 5:28 pm
I am also confused how to quiet down the scintillagadget notifications?
As mentioned:
I need a simple IsModified(#myscintillagadget) function.
And maybe a ClearModified(#myscintillagadget) function.
The nice thing about standards is there are so many to choose from. ~ Andrew Tanenbaum