Andreas Kling
4e451c1e92
Add client-side double buffering of window backing stores.
...
This prevents flicker and looks rather good. The main downside is that
resizing gets even more sluggish. That's the price we pay for now.
2019-03-17 04:23:54 +01:00
Andreas Kling
2ac4f54724
WindowServer: Oops, the message loop should wake up for timers.
2019-03-17 02:46:42 +01:00
Andreas Kling
0f49b5e7be
LibGUI: Ignore GWindow::update() with an empty rect.
2019-03-17 01:36:38 +01:00
Andreas Kling
01a2035ecf
LibGUI: Don't nap in event loop if there are already queued events.
...
This mirrors the WindowServer fix.
2019-03-17 01:34:31 +01:00
Andreas Kling
d3dcb42227
WindowServer: Don't nap in the message loop if there's a queued message.
...
This fixes a bug where clicking on a button would sometimes take a while
before showing up visually.
2019-03-17 01:30:55 +01:00
Andreas Kling
1c6dfc3282
AK: Make ByteBuffer's copy() and wrap() take void*.
...
This way we don't have to cast whatever we're passing to copy()/wrap().
2019-03-17 00:36:41 +01:00
Andreas Kling
5b0cbf547d
Base: Some work on various icons.
2019-03-17 00:33:49 +01:00
Andreas Kling
ec8bffb06d
LibGUI: Let GTextEditor deal with its horizontal padding internally.
...
I originally wanted to have the padding concept in GScrollableWidget
but it's really finicky with the ruler and everything.
2019-03-16 23:16:37 +01:00
Andreas Kling
78039ef057
TextEditor: Add actions for undo and redo. Not hooked up yet.
2019-03-16 23:16:11 +01:00
Andreas Kling
3854e752cb
LibGUI: Make GTextEditor inherit from GScrollableWidget.
...
This is quite nice, now we can share a ton of logic. :^)
2019-03-16 16:54:51 +01:00
Andreas Kling
6fbabac460
LibGUI: Factor out scrolling logic from GTableView into a GScrollableWidget.
...
This then becomes the base class for GTableView. I'd like to share as much
code as possible with GTextEditor and any other scrollable widgets.
2019-03-16 16:03:31 +01:00
Andreas Kling
dd5ca1940a
AK: Hoist the assertion in Retainable::release() to RetainableBase.
...
This means we don't have to generate a __PRETTY_FUNCTION__ symbol there
for each and every specialization.
2019-03-16 13:48:56 +01:00
Andreas Kling
3ebb5fbb87
AK: Remove custom allocator feature from Vector.
...
This wasn't really used and generated a whole bunch of template bloat.
2019-03-16 13:24:39 +01:00
Andreas Kling
5dd79736c5
Kernel: Remove the one client of Vector-with-custom-allocator.
...
This was a silly experiment. If I want to save space here, I can do it in
one of many other ways.
2019-03-16 13:19:58 +01:00
Andreas Kling
313ee8dd19
Move Lock from AK to Kernel, since it only works inside the kernel.
2019-03-16 13:18:22 +01:00
Andreas Kling
15657f0916
AK: Remove Buffer<T> since it was only ever instantiated with T=byte.
...
Instead make a specialized AK::ByteBufferImpl class for the backing store
of AK::ByteBuffer. This reduces template bloat.
2019-03-16 13:12:13 +01:00
Andreas Kling
eb610b309e
LibGUI: Make class_name() public so you can always call it.
...
I found myself having to cast to GWidget* all the time when writing some
generic debugging code that just wanted to dump widget info.
2019-03-16 12:57:04 +01:00
Andreas Kling
955a0ff477
AK: Reduce template bloat by hoisting non-typed parts of Retainable.
...
This is a bit of an old school hack, but it does remove a whole bunch of
generated symbols.
2019-03-16 12:47:19 +01:00
Andreas Kling
f44ba6a4c6
IRCClient: Add handling of some basic messages and commands.
2019-03-16 12:21:42 +01:00
Andreas Kling
b4f787090c
IRCClient: Add a little "(n)" indicator to window list for unread messages.
2019-03-16 02:14:53 +01:00
Andreas Kling
1394677528
IRCClient: Refactor window creation responsibilities.
...
IRCChannel and IRCQuery objects now create their own windows with the
help of an aid_create_window callback provided by IRCAppWindow.
There's still a bit of murk but this is already an improvement.
2019-03-16 01:45:49 +01:00
Andreas Kling
fc7f700c20
IRCClient: Rename IRCClientWindowFoo => IRCWindowFoo.
2019-03-16 01:15:19 +01:00
Andreas Kling
5c2d405e1f
IRCClient: Add menus.
2019-03-16 01:10:48 +01:00
Andreas Kling
746144f783
WindowServer: Add missing handling of AddMenuSeparator client request.
2019-03-16 01:09:27 +01:00
Andreas Kling
2b6cf37d20
IRCClient: Add some more toolbar actions. Starting to look nice.
2019-03-16 00:21:11 +01:00
Andreas Kling
3a3aa74b2e
IRCClient: Add a toolbar with some actions.
2019-03-15 23:24:40 +01:00
Andreas Kling
b54ab06595
GTableView: Add a way to turn off alternating row colors.
2019-03-15 21:41:27 +01:00
Andreas Kling
491aa112ab
IRClient: Add a member list to channel views.
2019-03-15 18:25:51 +01:00
Andreas Kling
08c15be0ca
IRCClient: Add ability to send query messages.
...
You can't open a query yet, but if someone starts one with you, you can
respond at least.
2019-03-15 18:02:38 +01:00
Andreas Kling
7e3673f710
GTextEditor: Disable the ruler in single-line mode.
...
Also make it possible to hide the ruler in multi-line mode, if you should
want to do that. :^)
2019-03-15 17:54:05 +01:00
Andreas Kling
1fc283ed7d
IRCClient+LibGUI: Add an input box so we can send messages to channels.
...
Implement this using a GTextEditor with a special single-line mode.
This new mode needs some polishing, but it's already very useful.
2019-03-15 17:37:13 +01:00
Andreas Kling
ad08165a25
LibGUI: Hit testing should skip invisible widgets.
2019-03-15 16:45:27 +01:00
Andreas Kling
a3d5ba8f23
LibGUI: Don't autofill the background of GStackWidget.
2019-03-15 16:44:51 +01:00
Andreas Kling
c1f2f5a153
LibGUI: Add a mode where GTableModel automatically activates on selection.
2019-03-15 16:25:30 +01:00
Andreas Kling
84f5312dc2
LibGUI: Disable GBoxLayout debug spam.
2019-03-15 16:23:12 +01:00
Andreas Kling
1089cd1378
IRCClient: Start using GStackWidget for the subwindows.
2019-03-15 16:12:51 +01:00
Andreas Kling
497300c492
LibGUI: Add a GStackWidget for many widgets sharing a single location.
...
Call set_active_widget(GWidget*) to put a new widget on top.
2019-03-15 16:12:06 +01:00
Andreas Kling
ab92252ee6
IRCClient: Hide all the table view headers.
2019-03-15 14:57:35 +01:00
Andreas Kling
a5d538b389
GTableView: Add a way to hide the column headers.
...
There are many situations where you would want a table view without headers.
2019-03-15 14:50:36 +01:00
Andreas Kling
a23dddc56f
IRCClient: Use a model for the window list.
2019-03-15 14:01:04 +01:00
Andreas Kling
eba5fd3f46
IRCClient: Rename IRCSubWindow => IRCClientWindow.
2019-03-15 13:20:46 +01:00
Andreas Kling
f004db19d0
IRCClient: Put the unhandled server messages nicely into the server log.
2019-03-15 13:16:29 +01:00
Andreas Kling
850c7504a2
IRCClient: Hacking on IRCClient bringup.
2019-03-15 13:07:04 +01:00
Andreas Kling
aa19735c5a
IRCClient: Start working on a simple graphical IRC client.
...
This will be a nice way to exercise both LibGUI and the TCP/IP support. :^)
2019-03-15 12:14:23 +01:00
Andreas Kling
f87dec1cbf
AK: Add CircularQueue::at().
2019-03-15 12:13:51 +01:00
Andreas Kling
5dfdcf796d
TCP: Correct checksum for packets with odd number of bytes.
2019-03-14 19:57:54 +01:00
Andreas Kling
4919b926f4
About: Oops, fill the window with background color.
2019-03-14 19:24:08 +01:00
Andreas Kling
49f273c4ca
WindowServer: Fix crash when initiating resize from a window edge.
2019-03-14 18:49:12 +01:00
Andreas Kling
b7ad35d040
Terminal: Enough compat work for Lynx to actually load web pages.
2019-03-14 18:33:21 +01:00
Andreas Kling
ee0f00c644
Terminal: Use TERM=xterm by default, and implement some more escapes.
2019-03-14 17:39:50 +01:00