1. Index of TkScript » News » 2015

news 2015

Table of Contents:

1. December, 28th (v0.9.23.4)
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"
2. Older news

auto-generated by "DOG", the TkScript document generator. Mon, 28/Dec/2015 14:30:32