greatly simplify slider implementation
Dependencies
- [2]
WYTWSZR3bugfix: crash unless first mouse click on settings - [3]
LEE7TNZMsync all sliders with the font slider where possible - [4]
LR4HHCRHresponsive layout for settings menu - [5]
W4EQ6IW4simplify state management for menus - [6]
3MJ2PYMWresolve conflicts - [7]
OGUV4HSAremove some memory leaks from rendered fragments - [8]
3QNOKBFMbeginnings of a test harness - [9]
2Q437U4Fstarting to experiment with animated pane transitions - [10]
5OVKHVY6nice way to make on.* handlers more discoverable - [11]
BJ5X5O4Alet's prevent the text cursor from ever getting on a drawing - [12]
ZOGPQR4Sreally ignore hidden sliders - [13]
VEAVIL4Xresize handler - [14]
6LJZN727handle chords - [15]
2CFLXLIEMerge text.love - [16]
WR2WMEPEimplement 'Run' button - [17]
UEG224LHdebug animations - [18]
4GX6NAY4some very basic animations for switching panes - [19]
JV27LDDKsliders for font size and color settings - [20]
4YDBYBA4clean up memory leak experiments - [21]
LWPFEZBIMerge lines.love - [22]
GWLETNMWMike's suggested button layout - [23]
KMSL74GAsupport selections in the source editor - [24]
YV2GBDNWpreserve settings across restart - [25]
4QFVRJ5Uget rid of pane transition animations - [26]
MZ3DMYPDstart sketching out a scrollbar - [27]
ED4Z6ORCcleaner API for file-system access - [28]
VXORMHMEdelete experimental REPL - [29]
CAG7PP5YMerge text.love - [30]
ESOJS6ZWextract a function - [31]
FS2ITYYHrecord a known issue - [32]
NVZTMKERpartition handlers between screen regions - [33]
RSZD5A7Gforgot to add json.lua - [34]
I52S4E5Frunning `print` now appends to output editor - [35]
D2TYFYG2Merge text.love - [36]
73OCE2MCafter much struggle, a brute-force undo - [37]
6RYGW5H3bugfix: output border color - [38]
TVCPXAAUrename - [39]
LGIEVJE6activate buttons for some time - [40]
BULPIBEGbeginnings of a module for the text editor - [41]
SW5GN5LPsuggest a default layout for freewheeling apps - [42]
VLTU33KWresolve conflicts - [43]
AVTNUQYRbasic test-enabled framework - [44]
CMKUVBXQpermit smaller font sizes - [45]
E75L5QGUok/cancel buttons in file dialog - [46]
XX7G2FFJintermingle freehand line drawings with text - [47]
UUAIVZ4U2 bugfixes in font rendering - [48]
66X36NZNa little more prose describing manual_tests - [49]
4SR3Z4Y3document the version of LÖVE I've been using - [50]
6DJMOJKEsupport event handlers - [51]
FIUQJVL2first draft of load/save buttons - [52]
QD4LOFQRMerge text.love - [53]
6VJTQKW7start supporting LÖVE v12 - [54]
47VXAH2Hdelete some old code - [55]
D43U7GQ4alter on-disk representation (manifest files) - [56]
PRE6XPRNresponsively increase/decrease font height - [57]
W3RRTO4Pextract a second helper for buttons - [58]
RK2ASPN7add lots of buttons to the toolbar - [59]
HVXZLNCCsend errors from event handlers to output editor - [60]
D2GCFTTTclean up repl functionality - [61]
ZLJYLPOTMerge lines.love - [62]
LXTTOB33extract a couple of files - [63]
TBTRYEBPMerge lines.love - [64]
VHUNJHXBMerge lines.love - [65]
YT7NMQ6Zdelete dead code - [66]
VHQCNMARseveral more modules - [67]
VXRYVZ74Merge text.love - [68]
ZM7NOBRMnew fork: carousel shell - [69]
YF2ATH2QMerge lines.love - [70]
LRDM35CEapp running again - [71]
VP5KC4XZMerge lines.love - [72]
ORKN6EOBMerge lines.love - [73]
SGMA5JLEsave the list of tests in repo - [74]
RU4HIK43Merge lines.love - [75]
VAVXKWZVaggregate global state inside a 'pane' object - [76]
LXR2FNDCresolve conflicts - [77]
PUXFYOQ4rename a function - [78]
3PSFWAILMerge lines.love - [79]
PJ5PQAQErecord support for multiple versions - [80]
2DVVKKVAflesh out Readme - [81]
BLWAYPKVextract a module - [82]
OOSUBWKXsubject people to a tutorial - [83]
36Z442IVback to commit 8123959e52f without code editing - [84]
GRB4J4QKmake slider easier to acquire on the extremes - [85]
CSXIZ4FAresolve conflicts - [86]
57HKHZ7Zinclude the tool that's mentioned in representation.md - [87]
BQTHWI4Acheck slider state more precisely - [88]
5RUFNRJOstart of the visual skeleton - [89]
SIJ5I4NZextract a helper for buttons - [90]
IP4LD33Dmouse events for scrollbar - [91]
ZENSSO3Dpass remaining love handlers through - [92]
Q6RXCILQMerge text.love - [93]
M5JXTW56Merge text.love - [94]
K2X6G75Zstart writing some tests for drawings - [95]
T4FRZSYLdelete an ancient, unused file - [96]
SIASJPGRsave the list of open files across restart - [97]
2L5MEZV3experiment: new edit namespace - [98]
OL7ZCZWDMerge text.love - [99]
QLJY3CKCbugfix: use border color in scrollbars - [100]
34BZ5ZKNMerge lines.love - [101]
N2NUGNN4include a brief reference enabling many useful apps - [102]
Z5M23NTKimplement second, 'output' editor - [103]
VUF2SX7Bimplement carousel buttons for inserting/switching current pane - [104]
CE4LZV4Tdrop last couple of manual tests - [105]
R5QXEHUIsomebody stop me - [106]
JOPVPUSAediting source code from within the app - [107]
GFBOJWNEresolve conflicts - [108]
TLOAPLBJadd a license - [109]
SJXIMERStype out a filename to load/save - [110]
6MQCFHXMremember when someone deletes an example - [111]
KKQKPGCIresolve conflicts - [112]
CMZDG7CJbugfix: tapping in scrollbar area - [113]
OTIBCAUJlove2d scaffold - [114]
EZHO4TSWnew file-system format for freewheeling apps - [115]
FM5LDKGTMerge text.love - [116]
KKMFQDR4editing source code from within the app - [117]
CZQ3NJ4NMerge text0 - [118]
5MEJ7XNHlay out buttons based on device dimensions - [119]
QIG72BFJreally really ignore invisible sliders X-(
Change contents
- file deletion: 0095-Selected_slider
Selected_slider = nil - file deletion: 0089-Settings_background_sliders
Settings_background_sliders = {} - file deletion: 0086-select_settings_slider
select_settings_slider = function(x,y, mouse_button)local result = falseif on_slider(Settings_font_slider, x,y) thenSelected_slider = Settings_font_slider.nameresult = trueendfor color,slider in pairs(Settings_foreground_sliders) doif on_slider(slider, x,y) thenSelected_slider = slider.nameresult = trueendendfor color,slider in pairs(Settings_background_sliders) doif on_slider(slider, x,y) thenSelected_slider = slider.nameresult = trueendendreturn resultend - file deletion: 0088-Settings_foreground_sliders
Settings_foreground_sliders = {} - file deletion: 0084-update_any_sliders
update_any_sliders = function(x,y)if Selected_slider == Settings_font_slider.name thenupdate_font_settings(slider_value(Settings_font_slider, x))return trueendfor color,slider in pairs(Settings_foreground_sliders) doif Selected_slider == slider.name thenForeground_color[color] = slider_value(slider, x)return trueendendfor color,slider in pairs(Settings_background_sliders) doif Selected_slider == slider.name thenBackground_color[color] = slider_value(slider, x)return trueendendend - file deletion: 0083-Settings_font_slider
Settings_font_slider = {name='font',-- left extremex0=nil, y0=nil,-- right extremex1=nil,-- slider itselfx=nil, -- y=y0w=nil, h=nil,lo=20, hi=40,} - edit in 0087-on_slider at line 2
if slider.x0 == nil then return end -- slider uninitialized - file addition: 0086-mouse_press_consumed_by_any_slider[6.2]
mouse_press_consumed_by_any_slider = function(State, x, y)for name, slider in pairs(State.slider_handlers) doif on_slider(slider, x,y) thenState.selected_slider = name -- used by update across frames; slider_handlers is recreated every framereturn trueendendend - file addition: 0084-update_sliders[6.2]
update_sliders = function(State, x)for name, slider in pairs(State.slider_handlers) doif State.selected_slider == name thenslider.update(slider_value(slider, x))breakendendend - file addition: 0083-slider[6.2]
slider = function(State, name, params)draw_slider(params)State.slider_handlers[name] = paramsend - edit in 0082-draw_slider at line 5
App.color(s.fg) - replacement in 0081-draw_settings_menu at line 12
Settings_font_slider = {name='font',slider(Global_state, 'font', {fg=Normal_color, - replacement in 0081-draw_settings_menu at line 23
}draw_slider(Settings_font_slider)update=update_font_settings,}) - replacement in 0081-draw_settings_menu at line 33
local prev = Settings_font_sliderSettings_foreground_sliders = {r = {name='fg/r',local prev = Global_state.slider_handlers.fontfor _,color in ipairs{'r', 'g', 'b'} doslider(Global_state, 'fg/'..color, {fg=Normal_color, - replacement in 0081-draw_settings_menu at line 41[3.158]→[3.158:187](∅→∅),[3.187]→[6.4076:4105](∅→∅),[6.4076]→[6.4076:4105](∅→∅),[6.4105]→[3.188:294](∅→∅),[3.294]→[6.4214:4243](∅→∅),[6.4214]→[6.4214:4243](∅→∅),[6.4243]→[3.295:401](∅→∅),[3.401]→[6.4352:4517](∅→∅),[6.4352]→[6.4352:4517](∅→∅),[6.4517]→[4.95:105](∅→∅)
value=Foreground_color.r,},g = {name='fg/g',x0=prev.x0, x1=prev.x1,y0=y+15,w=prev.w, h=prev.h,lo=0, hi=1,value=Foreground_color.g,},b = {name='fg/b',x0=prev.x0, x1=prev.x1,y0=y+30,w=prev.w, h=prev.h,lo=0, hi=1,value=Foreground_color.b,},}App.color(Normal_color)draw_slider(Settings_foreground_sliders.r)draw_slider(Settings_foreground_sliders.g)draw_slider(Settings_foreground_sliders.b)y = y+50value=Foreground_color[color],update=function(v) Foreground_color[color] = v end,})y = y+15endy = y+5 - replacement in 0081-draw_settings_menu at line 51
App.color(Normal_color)Settings_background_sliders = {r = {name='bg/r',for _,color in ipairs{'r', 'g', 'b'} doslider(Global_state, 'bg/'..color, {fg=Normal_color, - edit in 0081-draw_settings_menu at line 56[3.438]→[3.438:504](∅→∅),[3.504]→[6.4868:4897](∅→∅),[6.4868]→[6.4868:4897](∅→∅),[6.4897]→[3.505:544](∅→∅)
w=prev.w, h=prev.h,lo=0, hi=1,value=Background_color.r},g = {name='bg/g',x0=prev.x0, x1=prev.x1,y0=y+15, - replacement in 0081-draw_settings_menu at line 58[3.582]→[3.582:610](∅→∅),[3.610]→[6.5006:5035](∅→∅),[6.5006]→[6.5006:5035](∅→∅),[6.5035]→[3.611:640](∅→∅),[3.640]→[6.5068:5082](∅→∅),[6.5068]→[6.5068:5082](∅→∅),[6.5082]→[3.641:664](∅→∅),[3.664]→[6.5097:5309](∅→∅),[6.5097]→[6.5097:5309](∅→∅)
value=Background_color.g},b = {name='bg/b',x0 = prev.x0, x1=prev.x1,y0 = y+30,w=prev.w, h=prev.h,lo = 0, hi=1,value = Background_color.b},}App.color(Normal_color)draw_slider(Settings_background_sliders.r)draw_slider(Settings_background_sliders.g)draw_slider(Settings_background_sliders.b)value=Background_color[color],update=function(v) Background_color[color] = v end,})y = y+15end - edit in 0017-on.mouse_release at line 3
Selected_slider = nil - edit in 0017-on.mouse_release at line 8
Global_state.selected_slider = nil - replacement in 0017-on.mouse_release at line 40
end[6.1421]end - edit in 0016-on.mouse_press at line 10
if mouse_press_consumed_by_any_slider(Global_state, x,y) thenreturnend - replacement in 0016-on.mouse_press at line 15
select_settings_slider(x,y, mouse_button)-- nothing atm in settings menu that isn't a button or slider - edit in 0012-on.draw at line 3
Global_state.slider_handlers = {} - replacement in 0004-on.update at line 8[6.657]→[6.151:176](∅→∅),[6.704]→[6.151:176](∅→∅),[6.176]→[6.6210:6266](∅→∅),[6.6210]→[6.6210:6266](∅→∅),[6.6266]→[6.658:672](∅→∅)
if Selected_slider thenupdate_any_sliders(App.mouse_x(), App.mouse_y())end-- main areaupdate_sliders(Global_state, App.mouse_x())-- == main area