josh
c2323f4397
Do not queue up mouse wheel scroll events while others are still processing
2017-10-14 11:52:27 -04:00
josh
5e40c33eda
handle X button press events
2017-10-14 11:48:25 -04:00
josh
b100262a15
process multiple queued events up to a maximum time before redrawing screen
2017-10-14 11:42:03 -04:00
josh
49c34907f5
add Jtk_CheckEvent()
2017-10-14 11:36:07 -04:00
josh
3a594b5355
Avoid backlogging duplicate keypress events.
2017-10-14 11:31:29 -04:00
josh
34dc956272
Use modifier state from X keypress event, not current state at time of event process
2017-10-12 21:11:27 -04:00
josh
5999d62660
handle window resizes
2017-10-12 21:05:39 -04:00
josh
de31e97556
turn off custom key repeats and just use X key repeats
2017-10-12 20:44:16 -04:00
josh
6eeb0d5b9a
Process X events before timers
2017-10-12 19:59:46 -04:00
josh
07cdc5f8d0
Query for X modifier state when needed
2017-10-05 20:16:46 -04:00
josh
4e3050dbec
Handle key repeats in Jtk itself
2017-10-05 20:10:59 -04:00
josh
6ff2faf4af
Add key repeating back in with Jtk
...
Problem though: A change in modifiers between key press and release will
lead to a different keyval, which indexes differently into
g_key_statuses, leading to infinite key repeats. So we maybe should
revert to storing modifier state separately from keycode to handle this.
2017-10-01 17:46:30 -04:00
josh
486253d0b6
Jtk: encode key modifiers in key value field for keyboard events
2017-10-01 17:00:06 -04:00
josh
15fcaa80fa
Do not let X translate control key combinations to key codes for us.
2017-10-01 13:56:01 -04:00
josh
6546508cc6
Begin replacing SDL keyboard handling with Jtk
2017-10-01 13:48:03 -04:00
josh
afd4b83814
service timers so they do not infinitely re-trigger
2017-10-01 08:03:44 -04:00
josh
b9d650d9ef
fix Jtk_RemoveTimer()
2017-10-01 08:02:26 -04:00
josh
f424fd573d
Filter out repeated key presses
2017-09-30 22:46:46 -04:00
josh
035f5805ad
Define many more keys
2017-09-30 22:09:25 -04:00
josh
30a38a1487
Begin handling X keyboard events
2017-09-30 21:23:22 -04:00
josh
52b3c9faa9
if an X event is not sent to the user, make sure to check for more X events ready to process
2017-09-30 20:21:49 -04:00
josh
095d8d440e
Begin processing X events
2017-09-30 20:17:22 -04:00
josh
2348d7ede1
Split up Jtk sources and headers by functional area
2017-09-30 18:24:50 -04:00
josh
8154aa84cc
begin defining GUI events
2017-09-28 20:19:04 -04:00
josh
ff89fc7ca7
Begin removing SDL
...
Window and OpenGL context creation working.
Keyboard, mouse, window events not yet working.
2017-09-27 20:33:18 -04:00
josh
1c673817d2
BufferPane: add ability to draw line number gutter
2017-09-26 20:47:48 -04:00
josh
6d310f0f14
BufferPane: remove some cursor-tracking fields that are now tracked by BufferView
2017-09-23 16:12:52 -04:00
josh
8f0b3e4114
add temporary key bindings to move up/down by screen row
2017-09-23 16:08:46 -04:00
josh
a93578288e
fix cursor column handling
2017-09-23 16:08:34 -04:00
josh
1d12a7fe7d
BufferView: fix more scrolling problems
2017-09-23 16:02:34 -04:00
josh
33377f7668
fix moving cursor screen row down with row-wrapping tab characters
2017-09-23 10:54:30 -04:00
josh
79aa91bf49
draw crosshair below cursor for wrapped cursor lines
2017-09-23 10:34:00 -04:00
josh
55dc13d729
Fix scrolling BufferView past empty lines
2017-09-20 20:00:19 -04:00
josh
d2fa28c5e1
Fix BufferView repeating last line for the remainder of the view
2017-09-20 19:40:51 -04:00
josh
22171cacf9
begin using BufferView class to control the BufferPane layout
2017-09-20 19:34:57 -04:00
josh
382552d25c
use a simple rectangle for insert-mode cursor
2017-09-19 20:45:56 -04:00
josh
5c3a095aeb
BufferView: test and fix scrolling through super long lines
2017-09-13 20:57:42 -04:00
josh
70aba6e2d4
BufferView: add scroll_view_{up,down}()
2017-09-13 20:08:09 -04:00
josh
84759d0a36
BufferView: add functions to move cursor up/down by screen row
2017-09-11 22:43:38 -04:00
josh
fcd198b691
Add cursor movement logic to BufferView
2017-09-11 21:10:02 -04:00
josh
7ad28ceb67
update BufferLineWalker unit tests for full coverage
2017-09-04 15:57:03 -04:00
josh
74dfb7ce78
more BufferView tests, 100% coverage
2017-09-04 15:45:10 -04:00
josh
f3604e1850
BufferView optimization: avoid calling calculate_rows_in_cursor_line() twice per update()
2017-09-03 18:27:19 -04:00
josh
359f5bed9f
BufferView updates cursor screen row to follow moved cursor
2017-09-03 18:15:37 -04:00
josh
14e285041e
BufferView: user must call update() after all changes and before vert_iter()
2017-09-03 17:34:41 -04:00
josh
5b35a35b24
BufferView stores all lines in view after update()
2017-09-03 17:31:56 -04:00
josh
4b3e1ea7e7
Change BufferView and BufferLineWalker to return iterator objects for iteration instead of using lambdas for callbacks.
2017-09-03 17:05:01 -04:00
josh
b89f348602
add some initial BufferView unit tests
2017-08-29 23:20:42 -04:00
josh
8e0796decf
move much of the buffer layout code from BufferPane to BufferView
2017-08-29 23:03:49 -04:00
josh
545e73bd07
use BufferLineWalker from BufferView
2017-08-24 22:03:56 -04:00
josh
52751338c3
add BufferLineWalker unit tests
2017-08-24 21:44:10 -04:00
josh
67e4419d86
fix CharacterWidthDeterminer to be an abstract class
2017-08-24 21:44:01 -04:00
josh
3d4e8230fe
move character iteration logic from BufferView to BufferLineWalker
2017-08-24 20:57:59 -04:00
josh
65df0c2320
more work on BufferView
2017-05-07 19:52:21 -04:00
josh
e243dd654c
add BufferView::iter_cols()
2017-05-07 19:33:37 -04:00
josh
12e5a99e17
add CharacterWidthDeterminer
2017-05-07 19:28:57 -04:00
josh
43052321c4
add initial BufferView class
2017-05-07 19:10:00 -04:00
josh
c071c43c5c
add CommandMap class
2017-02-04 16:16:48 -05:00
josh
ced2d2856b
add "nop" and "delete" commands
2017-02-04 16:16:39 -05:00
josh
92a7dbe922
add Command module
2017-01-30 22:37:46 -05:00
josh
89687100f3
add another BUffer unit test
2017-01-28 12:24:26 -05:00
josh
add43beb92
fix bug counting lines to adjust iterators by in Buffer::lines_in_data()
2017-01-28 12:23:58 -05:00
josh
903b35f8bb
test CommandParser ignores newlines at end of command
2017-01-28 11:54:43 -05:00
josh
fbc942c4f7
add "q" command to quit
2017-01-27 21:00:52 -05:00
josh
ee0d1e0d0e
remove BufferPane::write_file() and handle writing from Window class
2017-01-27 20:58:15 -05:00
josh
6779890ca9
add "w" command to write the file
2017-01-27 20:53:21 -05:00
josh
2ae1d72d6a
Buffer::filename() returns shared_ptr to string
2017-01-27 20:50:15 -05:00
josh
37d27d6063
get ready to handle commands entered
2017-01-27 20:44:24 -05:00
josh
3bcc360c81
CommandParser: skip newline character
2017-01-27 20:43:00 -05:00
josh
3fc7dc62f8
allow Shift+Backspace to act as Backspace in insert mode
2017-01-26 22:16:11 -05:00
josh
9a34bfe4ba
Draw crosshair for the current line to the end of the screen row
2017-01-24 22:09:10 -05:00
josh
210a7b82c5
Fix up CommandParser operation and add unit tests
2017-01-23 21:47:40 -05:00
josh
0da4108c64
split out task to build unit tests to "build_tests" task
2017-01-23 21:19:40 -05:00
josh
116faff062
add CommandParser class
2017-01-22 20:16:51 -05:00
josh
726bd8bfaa
add EncodedString::iterator::offset() and size()
2017-01-22 19:20:33 -05:00
josh
d7315b0268
EncodedString: use a vector to store data
2017-01-22 18:35:18 -05:00
josh
0c2ac5b325
disallow creating an EncodedString with no data
2017-01-21 14:22:29 -05:00
josh
fcabf60551
make EncodedString safe to copy
2017-01-21 14:21:51 -05:00
josh
13ca7afd0c
Buffer::get_string() returns an EncodedString
2017-01-21 14:15:54 -05:00
josh
7e7b0497a7
allow comparison between an EncodedString and a std::string
2017-01-21 14:06:06 -05:00
josh
fce9f87265
add EncodedString module
2017-01-21 13:28:20 -05:00
josh
3b1199fbdc
Error out of configure script if submodules have not been checked out
2017-01-21 13:00:20 -05:00
josh
bb8dc6a6a4
fix expanding command buffer pane when cursor wraps to next line
2017-01-21 12:37:41 -05:00
josh
8d6112ed32
fix drawing highlight when in insert mode at the end of a line
2017-01-21 12:31:50 -05:00
josh
5eb5039d38
more stderr messages when gl3w fails to load
2017-01-20 15:07:04 -05:00
josh
b734249df2
fix library names for Windows
2017-01-20 14:48:12 -05:00
josh
671ba8312a
Get the page size on Windows
2017-01-20 14:45:41 -05:00
josh
677c4fd6e1
do not draw cursor crosshairs in command buffer pane
2017-01-19 21:49:25 -05:00
josh
ec9b47d113
Add cursor crosshairs
2017-01-19 21:48:02 -05:00
josh
be201ab73d
remove unused BufferPane::draw_buffer_character()
2017-01-19 21:23:25 -05:00
josh
b5cb693317
Only allow one pending keyboard event for any given key
2017-01-19 21:15:06 -05:00
josh
3cd988bc3a
expand command buffer to multiple lines as command length grows
2017-01-19 21:06:20 -05:00
josh
2ecee3f09a
clear the command buffer when changing focus away from it
2017-01-19 20:44:35 -05:00
josh
dc64b9774f
add a window icon
2017-01-19 20:38:38 -05:00
josh
ef1ae45c2a
add 32x32 jes icon
2017-01-19 20:10:48 -05:00
josh
d1b2350e1a
Fix unit tests broken by 08529fc
2017-01-19 15:05:32 -05:00
josh
a65a9fec41
Print a stderr message with more information about why creating the window failed
2017-01-19 09:27:16 -05:00
josh
3dcc6b2350
clear command buffer pane and return focus to file buffer pane when pressing enter in command buffer
2017-01-18 22:57:15 -05:00
josh
baa5d9ef07
add BufferPane::clear()
2017-01-18 22:53:49 -05:00
josh
276c756bb7
fix Buffer::clear() to update iterators
2017-01-18 22:51:33 -05:00