- IupLua中,当鼠标在text控件客户区中, SetGlobal('MOUSEBUTTON',..) (模拟滚轮操作(wheel))会触发一次 LEAVEWINDOW_CB - ENTERWINDOW_CB 回调(callback)。
iup.SetGlobal('INPUTCALLBACKS','YES')
iup.SetGlobalCallback('GLOBALWHEEL_CB',callback)
- 可以用 SetGlobal('MOUSEBUTTON','X x Y W -1') 构造无副作用的用户触发,过程位于以上手动的 GLOBALWHEEL_CB 之后。(因为 GLOBALWHEEL_CB 过程发生于滚动前)
-
Iup手册记录缺失。 IupSetFunction / IupSetCallback 没有相应的Lua表达(没有 Iup.SetFunction ,无需 Iup.SetCallback ),且在 IupSetFunction / IupSetCallback 中未提及 iup.SetGlobalCallback (Global Attributes提及)
- 已反馈-已回复,不作补充,其他位置有
- Bug。Global Attributes中的 MOUSEBUTTON 对滚轮负滚动(滑向自己)(delta==-1)无响应。(但仍会触发如上的 LEAVEWINDOW_CB , ENTERWINDOW_CB )
- 已反馈-已回复 已修复。
- 按下Shift/Ctrl时,滚动滚轮不会卷动,会触发GLOBALWHEEL_CB。
- 模拟按下Shift/Ctrl以阻止滚动。
- CARET_CB 会在按下Shift/Ctrl+设置CARETPOS时意外地响应。(照说只相应来自用户的交互操作)
- iup.text.SCROLLTO[POS] 给定的坐标[字符]位置将显示到客户区的左上角。
- 客户区左上角的字符位置为 iup.ConvertXYToPos(iup.text,0,0) 。需要向内偏移一定距离(边框、滚动条)才能获取到文本位置。
- bug,luaiup对象存储的用户值布尔无法覆盖字符串。
- 已反馈-已回复 不作为bug,机制如此。boolean类型存储于Lua,字符串、数值、函数、表存储于C,可重叠、不覆盖,获取时C优先于于Lua(字段在C中时会先读取)。
local iup=require'iuplua' local d=iup.dialog{userField=1} assert('1'==d.userField and 'string'==type(d.userField)) d.userField=false assert('1'==d.userField and 'string'==type(d.userField)) d.userField=nil d.userField=false assert(false==d.userField and 'boolean'==type(d.userField))
- (通过 SELECTIONPOS )改变文本选择范围时,光标总在末端/右侧(即便初始状态光标在范围的左端,选择范围向左扩大)。
- 刚改变完 SELECTIONPOS后,不能立即读取,立即读取得到的值为nil。
- 异常(已反馈),iup.text文本框中,当可见行只有1行时,向下一次滚动3行,向上一次滚动0行;当可见行只有2行时,向下一次滚动3行,向上一次滚动1行;当可见行为3行时,向下一次滚动3行,向上一次滚动2行;当可见行为3+行时,向下一次滚动3行,向上一次滚动3行。
- 设置 SELECTION[POS] 时,POS1,POS2对应锚点(Anchor)、光标(Caret),与POS1、POS2谁大谁小无关。获取时,POS1对应选段的左侧位置,POS2对应右侧,与锚点、光标无关。
- 设置 SELECTION[POS] ,光标总被放置在右侧。如,选择一段文本,将光标放置在左侧,即便 text.SELECTIONPOS=text.SELECTIONPOS ,光标被移动到右侧。
- 获取失去焦点的TEXT的光标位置在选择范围(选段)的左侧。
- 按住修饰键Shift/Ctrl时,(通过 SELECTION[POS] )改变光标不会触发回调(Callback),移动鼠标(而非释放修饰键)时触发。
- 使用 text.CHARSIZE 获取单字节字符(半角)的平均大小(宽*高)。(推荐用等宽字符)
- 调试时不可依赖光标、鼠标位置。如,失去焦点时,CARETPOS为0?(选区的左端?)。