Commit Graph

497 Commits

Author SHA1 Message Date
Bill Currie 9bfd14b687 [qwaq] Bring in qc gcd to use for debugger testing
It was even recent enough to compile first try.
2020-03-24 23:02:19 +09:00
Bill Currie fd0700f9ae [qwaq] Add a proxy view class
The idea is that the view can be switched out readily: the proxy simply
passes all messages to its view object.
2020-03-24 21:02:54 +09:00
Bill Currie 05e377c3ac [qwaq] Make a View protocol 2020-03-24 21:02:26 +09:00
Bill Currie d73f380ba4 [qwaq] Add -hide to View's interface
Missed it somehow.
2020-03-24 21:01:48 +09:00
Bill Currie 32d77eabac [qwaq] Hook up the debugger modules
Now to write all the high level stuff. Wheeeee
2020-03-24 20:15:35 +09:00
Bill Currie 12f7b52fff [qwaq] Add initial qwaq debugger system
It's not hooked up yet, and only very basic functionality is
implemented, but I think this approach will work.
2020-03-24 19:52:35 +09:00
Bill Currie e56d00f27f [qwaq] Make qwaq_message_t more useful
Couldn't use @param because of its use in gcc as well as qfcc.
2020-03-24 19:52:00 +09:00
Bill Currie 0bbef18786 [qwaq] Make qwaq_add_event public 2020-03-24 19:50:05 +09:00
Bill Currie 60f9f4815a [qwaq] Make qwaq_cond_init public 2020-03-24 19:48:57 +09:00
Bill Currie baff891345 [qwaq] Rename cond_t to rwcond_t 2020-03-24 19:48:20 +09:00
Bill Currie 148a351e94 [qwaq] Offset event coords only when positional
This fixes pgup/pgdn not working in the editor.
2020-03-24 13:46:26 +09:00
Bill Currie 995074269b [qwaq] Handle some keys in the editor
Doesn't work yet, though.
2020-03-24 13:38:20 +09:00
Bill Currie a75eeb6955 [qwaq] Remove unnecessary options flag
I don't think it will be necessary.
2020-03-24 13:36:54 +09:00
Bill Currie d022c6c4bd [qwaq] Disable updateScreenCursor
It's wrong for the current hierarchy and corrupts the view's owning
group. Thought is needed for how to proceed with cursor handling.
2020-03-24 13:34:45 +09:00
Bill Currie 77651dbcba [qwaq] Implement focus handling
Sort of works (when not segfaulting due to problem fixed in next
commit).
2020-03-24 13:33:28 +09:00
Bill Currie 47b8f8dd6a [qwaq] Remove useless protocols
The HandleEvent protocols wound up being unnecessary.
2020-03-24 13:27:35 +09:00
Bill Currie 30519e93fb [qwaq] Move mouse event offsetting to Window
This way, Group doesn't need to query its owner's position.
2020-03-23 23:59:54 +09:00
Bill Currie 8707ac0d57 [qwaq] Add a guard to formatLine
I got really weird error (invalid panel passed to top_panel) when there
was no such call, so I guess there was some memory corruption.
formatLine is the only suspect, but when I put in the guard, the error
wasn't reproduced (just scrolling through qwaq's makefile in a big
window).
2020-03-23 23:18:02 +09:00
Bill Currie 52722b73c1 [qwaq] Adjust edge window control lengths
I'd forgotten them when adjusting the corner control sizes
2020-03-23 23:03:35 +09:00
Bill Currie 622b5f4c45 [qwaq] Fix the handling of overlapping views
This even simplifies the logic for mouse enter/leave handling, a nice
bonus.
2020-03-23 22:35:30 +09:00
Bill Currie 8b193c6b6c [qwaq] Remove some debug prints 2020-03-23 22:28:18 +09:00
Bill Currie ba3efca8e5 [qwaq] Make the corner window controls 2x2
This makes them a little easier to grab but exposes a bug in Group
handleEvent when views partially overlap.
2020-03-23 22:27:08 +09:00
Bill Currie 1479880954 [qwaq] Add window control buttons
With this, windows can be resized using any of the corners or the three
sides other than top (top side is move-only, otherwise moving a window
without resizing would be impossible).
2020-03-23 22:10:03 +09:00
Bill Currie 467115429e [qwaq] Add gfGrowNone and a grow mode setter
gfGrowNone is just to allow not growing with the owner to be explicitly
stated.
2020-03-23 22:08:30 +09:00
Bill Currie 731a123b79 [qwaq] Add a title bar
The title bar is special in that it is always centered at the top of its
owner, thus it takes no rect.
2020-03-23 22:01:13 +09:00
Bill Currie 19a4efed16 [qwaq] Add support for invisible buttons
Useful for window controls.
2020-03-23 22:00:05 +09:00
Bill Currie afda214487 Adjust some whitespace 2020-03-23 20:18:12 +09:00
Bill Currie 9bc91cd7d1 [qwaq] Implement resizing
Terminal resize is detected and the views adjust appropriately (well,
those for which I've set grow flags: the window title bar doesn't adjust
yet).
2020-03-23 20:14:32 +09:00
Bill Currie 1dd05a8ac9 [qwaq] Fix an uninitialized var warning 2020-03-22 23:58:58 +09:00
Bill Currie bde3124533 [qwaq] Fix some more formatLine cases
I think this is all of them. Scrolling around in a file, including
having the end of file visible in the window, seems to work well.
2020-03-22 23:50:27 +09:00
Bill Currie 16c60655e7 [qwaq] Implement scrolling via mouse wheel
Line formatting segs when scrolling horizontally through a tab, but...
things ware working nicely.
2020-03-22 22:42:56 +09:00
Bill Currie 8694798943 [qwaq] Fix line formatting for the simple case
That is, known to be working for the simple case (no tabs, no horizontal
scroll).
2020-03-22 22:13:35 +09:00
Bill Currie 10adb116ef [qwaq] Start working on the source view/editor
Line formatting is a bit messed up, but other than non-virtual text
being double-counted, things seem to be ok (view only).
2020-03-22 22:03:34 +09:00
Bill Currie ee9d3a36ab [qwaq] Add an editor buffer
It's a fairly high-level wrapper for TextBuffer in that it implements
file ops (load/save), searching, navigation, and formatting (simple
line-oriented with tab stops (currently at 4 spaces)).
2020-03-22 21:31:30 +09:00
Bill Currie 63a2204fa5 [qwaq] Fix incorrect mouse wheel bits
I thought I fixed that already (mistreating mouse 3 as part of the wheel
group).
2020-03-22 14:24:12 +09:00
Bill Currie f3c68eaada Implement mouse auto events
These are for when a button is held down: good for scroll bar arrows
etc.
2020-03-22 14:06:27 +09:00
Bill Currie 5cdd1931b7 [qwaq] Remove some debug 2020-03-22 13:56:31 +09:00
Bill Currie 50290baf04 [qwaq] Add missing part of commit 2020-03-22 13:54:54 +09:00
Bill Currie 75f38f456b [qwaq] Fix a linker warning that had been hiding 2020-03-22 13:49:42 +09:00
Bill Currie fc44582726 [qwaq] Parse function keys
While the key escape sequences are xterm-specific, they are only the
default and preliminary provision has been made for overriding them.
However, no override mechanism has been implemented beyond using dynamic
table lookup.
2020-03-22 13:47:44 +09:00
Bill Currie 275ed22362 [qwaq] Actually ensure tv_nsec is valid
While typing the previous message I thought to check my "carry" logic.
Sure enough, it was wrong... out by 1. I guess I won the threading
lottery :P
2020-03-22 08:40:51 +09:00
Bill Currie 486728a4bd [qwaq] Be a little paranoid about cond wait timeouts
I'd left qwaq-curses running overnight and found it locked up: both
threads were looping because pthread_cond_timedwait was returning
EINVAL. Thus bail if anything other than 0 is returned, and try to
ensure tv_nsec is in the range 0..999999999
2020-03-22 08:35:37 +09:00
Bill Currie 243840daa7 [qwaq] Support sgr mouse reports
Now buttons 12+ work (in theory, I have only 12 so can't test higher),
and button release is no longer ambiguous.
2020-03-22 02:46:15 +09:00
Bill Currie d352749666 [qwaq] Bypass ncurses for input handling
For now, only 1003 mouse mode is supported, and function keys are not
yet supported, but the mouse is much more reliable: no lost events.
2020-03-22 01:00:05 +09:00
Bill Currie 88b4046632 [util] Pass a data pointer to shutdown functions
And clean up the mess.
2020-03-22 00:57:54 +09:00
Bill Currie 176cc7b9c1 [qwaq] Make some improvements to mouse handling
This doesn't fix the problem of lost events: that seems to be inside
ncurses. I've done some investigations, and it seems xterm sends
separate events for motion and pre/release (which have current coords),
in both 1003 and 1006 modes. No idea what ncurses is doing (does it even
handle 1003 properly?), and it requires the use of xterm-1006 for it to
use 1006 mode (which is nice in that it disambiguates button releases
and allows for huge terminals (not that I would use such normally)).
Guess I've got some side-work cut out for me :P
2020-03-21 21:05:34 +09:00
Bill Currie fb6883851d [qwaq] Actually unlock the event queue mutex
And now everything works as well threaded as it did unthreaded.
2020-03-21 12:58:07 +09:00
Bill Currie fb17f8093d [qwaq] Correct some queue test logic
This fixes the wedge during initial setup and drawing, but the program
deadlocks when processing input and there's an event.
2020-03-21 12:58:07 +09:00
Bill Currie abedb465af [qwaq] Use separate conditions for queue read/write
While writing the code I suspected this would be necessary, but it's
nice to know. Now the window seems to be correctly fetched, but
get_event locks up.
2020-03-21 12:58:07 +09:00
Bill Currie af137937bd [qwaq] Add missing mutex unlock 2020-03-21 12:58:07 +09:00