Up: |
|
TkScript |
news 2015 |
added: new tks-setup.exe and tks.zip Win32 binary snapshots, also see Windows 2000/XP/Vista/Win7 32bit
fixed: tks: don't debug-print linearly allocated String
chars after LinearAllocator has already been shut down at exit
fixed: tks: avoid bad alloc in array assignments (check if index is negative)
fixed: tks: PointerArray.indexOfPointer()
use YAC_VALID macro when searching for null pointers
fixed: tks: class C { test { trace yacMetaClassName(); } } ==> invalid object (this)
fixed: tks: don't set "tks_current_context" in evalFunction() even if there's no default context. Apps must use yacContextSetDefault() if a script fxn/method is to be called from a non-script thread (e.g. the windows multimedia timer). In previous releases, evalFunction() silently set the default context which caused a crash when the context was deleted later on (e.g. the MIDITimer::script_context)
fixed: tks: crash when initializing script class instance that has a ClassArray
member which has not been assigned a class template, yet
fixed: tks: Envelope.tickPrecise()
: inc time even if envelope has no elements
fixed: tks: Envelope.free : don't set env time to 0 when free() is called
fixed: tks: (0 == float) != (float == 0) (float was converted to int in left expression)
fixed: tks: Time.calc()
: update month/monthday/year/.. (e.g. after calcing 31st of February..)
fixed: tks: return 0 if divisor or modulo is 0 (fixes (0.0/0) = <void>)
fixed: tks: Envelope.get()
: reset b_shreset
fixed: tks: Envelope
: fix current_idx/delta_time after deleting or inserting events
fixed: tks: Envelope.setTime()
: set abs_time even if seek time is beyond last event or there are no events at all
fixed: tks: Time.calc()
: set is_dst to -1 to avoid tm_hour increment
fixed: tks: auto-unbox values in tripleargexpr (see "tks-examples/tripleargexpr_unbox.tks")
fixed: tks: don't parse (myobj.mymember <= expra <= exprb) as pointer assign
fixed: tks: Boolean
number object unary ! not working (e.g. Boolean b = false; trace !b;)
fixed: tks: class member is not initialized if its an instance of the class' parent class and contains a reference back to the derived class
changed: tks: changed: use pthreads SCHED_FIFO policy when setting Thread
priority to THREAD_PRIORITY_HIGHEST
(prio=40) or THREAD_PRIORITY_TIME_CRITICAL
(prio=80)
changed: tks: (Linux) unprotect JIT code (mprotect) before freeing it (prevents spurious SEGV_ACCERR errors)
changed: tks: (windows) use performance counter for milliSeconds()
(see tks-config.h TKS_WIN32_USE_PERFCOUNTER)
changed: tks: increase TokenizedScript lines element size from 16 bit 32bit (allows more than 65535 tokens per source module; packed script loader/writer version 3)
changed: tks: increase max. number of class members from 192 to 224
added: tks: when onSignal handler returns true, the default signal handling code is skipped (e.g. don't call exit() when SIGINT was raised)
added: tks: IntArray.replace()
added: tks: IntArray.inc()
, IntArray.dec()
(silently ignores out-of-bounds error)
added: tks: DummyStream
(just inc offset and track max size, can be used to determine buffer size for real save op)
added: tks: Envelope.rotateEvents()
added: tks: HashTable.replaceKey()
added: tks: Envelope
: remove/shift window range when value is inserted/replaced
added: tks: Stream.getB8()
(returns either 1 (if val>0), or 0)
added: tks: add Envelope.getAndResetNew()
changed: yac: ying now uses a two-pass algorithm (scan+emit) to support class forward declarations
fixed: tkui: ui::TableView
/ ui::CheckBox
cell editor bug (introduced in last release due to new touch mode)
fixed: tkui: key repeat handler did not call root layer
fixed: tkui: Label.getCaptionHeight now only uses caption if it contains newline(s)
fixed: tkui: ui::Button
: don't overwrite custom inner padding
fixed: tkui: ui::ComboBox
popup now inherits font from parent
fixed: tkui: ui::ComboBox
: don't select first popup entry if popup appears below parent
fixed: tkui: adapt ui::ComboBoxPopup
scroller width to ui::ComboBox
"arrowSx" XFM setting
fixed: tkui: ui::ViewPane.makeWidgetVisible()
(now using ui::Layer.calcParentPosition()
instead of ui::Layer.calcAbsolutePosition()
, also shows widget centered, if possible)
fixed: tkui: ui::ComboBox
: (non-child) wheel scrolling in popup
fixed: tkui: fix keyrepeat if onKey() takes longer than keyrepeat_timeout to execute (in vsync keyrepeat mode)
fixed: tkui: ui::Layer.onDrawOverlays()
: ui::ViewPane
clipping (pushParentViewPaneScissors(), popParentViewPaneScissors())
fixed: tkui: round view offset x/y to integer
changed: tkui: added fontName argument to ui::StringDialog.init()
changed: tkui: enable keyrepeat for F-keys by default
changed: tkui: improved tooltip position in touch mode
changed: tkui: lock ui::CheckBox
mouse focus as long as LMB is pressed (if not used as a cell editor)
changed: tkui: ui::SuperBorderLayout
: add pad_top to vertically centered layer position
changed: tkui: ui::Icon.drawIconScaled()
: keep destination alpha
changed: tkui: ui::Font.renderClippedString()
: scale clip rect by inverse font scale (needed when requested font is only available in a different size and needs to be scaled down )
changed: tkui: ui::TableView
: darken and disable mouse+kbd controls when not editable
changed: tkui: let widget process lctrl-x even if it supports triad keymode (e.g. ui::TextField
)
changed: tkui: ui::ComboBox
: don't change selection on non-child LMB clicks
changed: tkui: ui::Button
: don't make mouse-down initiate a button press when button gains mouse focus (e.g. don't accidentally click a button when a tableview click shows a new form)
changed: tkui: decrease default minimum layer size from (16;16) to (1;1)
added: tkui: ui::StatusBar.endMessageLock()
. Locked mode is started by passing a message with timeout -1.
added: tkui: ui::Panel.setPanelAlphaAndTint()
(in addition to alpha
and tint
XFM attribs)
added: tkui: ui::FloatParam
step
attribute (sets both stepFine
and stepCoarse
)
added: tkui: DISPLAY_USER
mode, ui::FloatParam.setUserTable()
, ui::FloatParam.getUserTable()
added: tkui: ui::TextField.setInnerPadTop()
, ui::TextField.setInnerPadRight()
, ui::TextField.setInnerPadBottom()
, ui::TextField.setInnerPadLeft()
, ui::TextField.setInnerPadding4f()
+ innerPadLeft
, innerPadRight
, innerPadTop
, innerPadBottom
, innerPadding
XFM attribs (also applies to e.g. ui::FloatParam
)
added: tkui: ui::Layer.setDefaultInnerPadding()
, ui::ComboBox.setDefaultInnerPadding()
, ui::TextField.setDefaultInnerPadding()
, ui::FloatParam.setDefaultInnerPadding()
added: tkui: added: ui::TableView
forceWheelScrollRow
XFM attribute
added: tkui: ui::ComboBox
reverseWheelDir
XFM attribute
added: tkui: ui::TextInputDialog.setButtonFontByName()
, ui::TextInputDialog.setMessageFontByName()
, ui::TextInputDialog.setTextFontByName()
, ui::TextInputDialog.setButtonIcons()
changed: tkui: set font rgb channels to 255 when antialiasing is enabled (and use ARGB32 instead of ALPHA8 texture format)
added: tkui: ui::Label.setCaptionTint()
added: tkui: ui::TableView
scrollerYSx
and scrollerXSy
XFM attributes
added: tkui: ui::Button
repeat
, repeatDelay
, repeatInterval
XFM attributes
added: tkui: ui::TableView
selectOnKeyRelease
XFM attribute
added: tkui: ui::Label.setCaptionSizeReserve()
, ui::Label.getCaptionSizeReserve()
, and captionSizeReserve
XFM attribute
added: tkui: ui::TabbedView
keepParent
XFM attribute
added: tkui: ui::ComboBox.getOptionNameByIdx()
added: tkui: ui::Layer.setUserData()
, ui::Layer.getUserData()
added: tkui: ui::Label
iconPadLeft
, iconPadRight
, iconPadTop
, iconPadBottom
, iconPadding
XFM attributes
added: tkui: ui::PopupMenuBar
: globalAcceleratorList
XFM option (when set to 0 )
added: tkui: ui::FloatParam
: keys 'r' and 't' divide resp. multiply current value by 1.5
added: tkui: ui::ComboBox
: show lead selection in popup
added: tkui: ui::FloatParam.setNonEditableText()
added: tkui: ui::Button
: labelButton
XFM attribute (draw button as label)
added: tkui: ui::Layer.calcParentPosition()
added: tkui: ui::ComboBox
disableNonChildMouseWheel
XFM attribute (e.g. when widget is placed in a ui::ScrollPane
)
added: tkui: ui::FloatParam
provideEdited
XFM attribute (when set, send event each time a char is typed)
added: tkui: ui::ComboBox.setOptionBGColors()
added: tkui: ui::Layer.recursiveSetEnableCursorKeyTabCycling()
(prevent ui::Layer
from eating cursor key presses for local tab cycling)
added: tkui: ui::Layer.wantKeyboardFocus()
added: tkui: ui::TextInputDialog.NewHold()
added: tkui: ui::Panel
collapse
XFM attribute (sets default size = 0 instead of 16383)
added: tkui: ui::Button
ACTION_PRESS, ACTION_RELEASE, delta
XFM attribute
added: tkui: ui::ComboBox
disableWheel
XFM attribute (allow wheel only if widget has kbd focus)
added: tkui: ui::ChoiceDialog.setEnablePopup()
added: tkui: ui::ScrollPane
disableWheel
XFM attribute
added: tkui: ui::UI.LockRedraw()
, ui::UI.UnlockRedraw()
added: tkui: ui::Panel.setEnableCollapse()
added: tkui: ui::TabSwitch
widget
added: tkui: ui::UI.QueueReopen()
added: tkui: ui::UI.SetZoom()
changed: tkui: ui::FloatParam
: when range is editable, reset range when value is entered manually
fixed: tksdl: use statically allocated strings for SDL.sendEvent()
(fixes random memory leaks since apparently not every event sent was handled)
fixed: tksdl: don't flood event queue with redraw/timer events while processing a regular event
added: tksdl: Key.modShiftOrCaps()
fixed: tkmidi: ALSA version of RecordedMIDIEvent.getShortMessage()
returned address of buffer instead of content
changed: tkmidi<alsa>: updated MIDITimer
implementation (now using SND_TIMER_GLOBAL_HRTIMER by default)
changed: tkmidi: don't enumerate swsynth devices so inputIdx and outputIdx remain symmetrical
added: tkmidi: add MIDIIn.setEnableParam()
, MIDIIn.getEnableParam()
(toggles (N)RPN parser. when disabled, CCs 6/38/98/99 can be used freely)
added: tkmidi: add MIDIOut.getDeviceIdx()
added: tkmidi: add MIDIIn.getDeviceIdx()
added: tkportaudio<alsa_async>: add -DPANDORA_LOWLATENCY_HACK
added: tksampler: →StSampleVoice "override sample loops"
auto-generated by "DOG", the TkScript document generator. Mon, 28/Dec/2015 14:30:32