Andreas Kling
d48f486634
LibGUI: Don't draw left and right side of surfaces that span entire window.
...
In other words, if a surface stretches from the left side of the window
all the way to the right side, skip shading and highlighting the sides.
This makes widgets blend together just slightly with the window. :^)
2019-03-29 02:20:22 +01:00
Andreas Kling
9d7a513681
GTextEditor: Keep tweaking the single-line look.
2019-03-29 01:57:29 +01:00
Andreas Kling
5d72cf5a3f
LibGUI: Improve GFrame's look for Container shapes.
...
This is now starting to look like a proper container. Very nice :^)
2019-03-28 20:15:13 +01:00
Andreas Kling
f939fb7eb7
Userland: Add a simple GFrame testing window to guitest2.
2019-03-28 18:52:03 +01:00
Andreas Kling
c7ab643883
Move LibGUI/GStyle to SharedGraphics/StylePainter.
...
I want to paint some buttons in WindowServer where we don't have LibGUI.
2019-03-28 17:32:38 +01:00
Andreas Kling
d12b6b8677
LibGUI: Tweak GScrollBar gutter color.
2019-03-28 17:29:14 +01:00
Andreas Kling
9fa21fa585
LibGUI: Add a GPainter class that inherits from Painter.
...
This gets rid of the last little piece of LibGUI knowledge in Painter.
2019-03-28 17:19:56 +01:00
Andreas Kling
3dc4255eb4
LibGUI: Use GFrame to draw the frames around GItemView and GTableView.
2019-03-28 16:58:29 +01:00
Andreas Kling
1fc03a7644
LibGUI: Make GScrollableWidget a GFrame and fix up GTextEditor for it.
2019-03-28 16:14:26 +01:00
Andreas Kling
cb296ffede
LibGUI: Add a GFrame class that can be inherited by framey widgets.
...
This will gather the code for painting sunken/raised frames etc in a single
place and make it easier add a bit of pleasant shading to UI's. :^)
2019-03-28 15:30:29 +01:00
Andreas Kling
670e376e27
Tweak the look of various UI surfaces and buttons.
2019-03-27 20:48:23 +01:00
Andreas Kling
d71820a382
LibGUI: Make the buttons in GInputBox and GMessageBox slightly taller.
2019-03-27 20:47:48 +01:00
Andreas Kling
0058da734e
Kernel: Add Inode::truncate(size).
...
- Use this to implement the O_TRUNC open flag.
- Fix creat() to pass O_CREAT | O_TRUNC | O_WRONLY.
- Make sure we truncate wherever appropriate.
2019-03-27 16:42:30 +01:00
Andreas Kling
aef6030a80
LibC: Time-related POSIX compliance fixes.
2019-03-27 01:31:53 +01:00
Andreas Kling
be604652ae
LibGUI: Add GIcon::default_icon(name).
...
This is a convenience helper to instantiate a GIcon like so:
auto icon = GIcon::default_icon("filetype-image");
This will give you the "filetype-image" icon in both 16x16 and 32x32 sizes.
2019-03-25 14:46:37 +01:00
Andreas Kling
43bb7aad4c
GItemView: Some improvements to keyboard navigation.
2019-03-25 14:13:32 +01:00
Andreas Kling
a3390b6f1c
GTextEditor: Draw a simple border around single-line editors.
2019-03-25 14:13:21 +01:00
Andreas Kling
4d3478aa71
GItemView: Hide the horizontal scrollbar since we never need it.
...
This view always relayouts the content to fit the available width, so we
don't need a horizontal scrollbar. :^)
2019-03-25 13:58:47 +01:00
Andreas Kling
20137e45f4
LibGUI: Ignore GWidget::update() on invisible widgets.
2019-03-25 13:58:30 +01:00
Andreas Kling
bc3c199bb1
GItemView: Add slightly more horizontal padding to the icon labels.
2019-03-25 13:35:52 +01:00
Andreas Kling
838a06096a
GTextEditor: Shift+Delete should delete the current line.
2019-03-25 13:14:02 +01:00
Andreas Kling
fceeb9b695
GLock: Remove some debug spam.
2019-03-25 13:05:24 +01:00
Andreas Kling
500df578fe
LibGUI+Kernel: Add a GLock class (userspace mutex.)
...
It's basically a userspace port of the kernel's Lock class.
Added gettid() and donate() syscalls to support the timeslice donation
feature we already enjoyed in the kernel.
2019-03-25 13:03:49 +01:00
Andreas Kling
108b663618
GScrollBar: Clicking in the gutter should jump directly to that position.
...
I think I like how this feels but I'm not 100% sure yet, so I'm leaving
the old feel in behind an #ifdef.
2019-03-25 05:03:40 +01:00
Andreas Kling
614dafea32
FileManager+LibGUI: Show thumbnail generation progress in the statusbar.
2019-03-25 04:25:25 +01:00
Andreas Kling
32191b0d4b
GBoxLayout: Don't subtract margins from the available space twice.
2019-03-25 04:24:20 +01:00
Andreas Kling
20f7d7ec67
LibGUI: Add GWidget::doubleclick_event().
...
Now double-clicking an item in a GTableView or GItemView will activate it.
2019-03-25 01:43:32 +01:00
Andreas Kling
b4da451c9a
WindowServer+LibGUI: Implement automatic cursor tracking.
...
When a mouse button is pressed inside a window, put that window into an
automatic mouse tracking state where all mouse events are sent to that
window until all mouse buttons are released.
This might feel even better if it only cared about the mouse buttons you
actually pressed while *inside* the windows to get released, I don't know.
I'll have to use it for a while and see how it's like.
2019-03-24 15:01:56 +01:00
Andreas Kling
86413a6f5a
LibGUI+FileManager: Add a GIcon class to support multi-size icons.
...
A GIcon can contain any number of bitmaps internally, and will give you
the best fitting icon when you call bitmap_for_size().
2019-03-24 04:28:36 +01:00
Andreas Kling
1355d09c72
GItemView: Implement up/down/left/right keyboard navigation.
2019-03-23 04:05:58 +01:00
Andreas Kling
19fa70c821
LibGUI: Add a GItemView class.
...
This is a GAbstractView subclass that implements a icon-based view onto
a GModel. It still need a bunch of work, but it's in basic usable shape.
2019-03-23 03:54:45 +01:00
Andreas Kling
5707d7f547
LibGUI: Add GAbstractView base class for GTableView.
...
This is in preparation for adding a new view class.
2019-03-23 02:04:31 +01:00
Andreas Kling
994cf10b3e
LibGUI: Rename GTableModel => GModel.
2019-03-23 01:42:49 +01:00
Andreas Kling
d563dc0565
LibGUI: Add a setting to make GLabel stretch its icon.
...
Use this in QuickShow to allow arbitrarily scaling the opened image.
2019-03-22 04:20:48 +01:00
Andreas Kling
e4498194c2
LibGUI: Remove unnecessary timer in GProgressBar.
2019-03-22 02:49:57 +01:00
Andreas Kling
c3b0c1ba68
LibGUI: Add a GProgressBar widget.
2019-03-22 02:49:45 +01:00
Andreas Kling
e4dfd5a3a4
WindowServer: Support PNG wallpapers.
...
Fix up /bin/pape so it tells the WindowServer which wallpaper file to use.
2019-03-21 15:54:19 +01:00
Andreas Kling
42755e98cf
SharedGraphics: Implement a simple PNG decoder.
...
This is extremely unoptimized, but it does successfully load "folder32.png"
so it must be at least somewhat correct. :^)
2019-03-21 03:57:42 +01:00
Andreas Kling
ed2303e2d8
TextEditor: The delete key should work even when there's no selection.
2019-03-20 23:11:00 +01:00
Andreas Kling
be4533717a
FileManager: Add ability to create new directories.
2019-03-20 22:40:06 +01:00
Andreas Kling
1030e6b848
FileManager: Add a "Location:" label.
2019-03-20 22:01:02 +01:00
Andreas Kling
f0915641c5
TextEditor: Add "delete" action.
2019-03-20 18:16:04 +01:00
Andreas Kling
daa1dcb5e8
FileManager: Use a GTextEditor for the location bar + tweak icons.
2019-03-20 18:12:56 +01:00
Andreas Kling
951377e93e
GTableView: Add ability to hide individual columns at view-level.
...
Use this in IRCClient to hide the "sender" column in the server message view
since everything in that view comes from the "Server" anyway.
2019-03-20 13:36:07 +01:00
Andreas Kling
d17a91f185
Move WindowServer into Servers.
2019-03-20 04:34:14 +01:00
Andreas Kling
f47945759b
LibGUI: Make GTableModel a retainable object.
...
It became clear that this class needs to support multiple owners.
2019-03-20 03:27:07 +01:00
Andreas Kling
3ecfde193a
GEventLoop: Quit the event loop on EOF from the WindowServer.
2019-03-20 01:10:52 +01:00
Andreas Kling
9551e2e4b5
LibGUI: Add GScrollableWidget::scroll_to_bottom/top().
2019-03-19 03:09:21 +01:00
Andreas Kling
e15cc4509f
LibGUI: More GInputBox refinements.
...
Fix some GBoxLayout bugs to make the buttons in GInputBox line up better.
There are still some imperfections due to rounding errors.
2019-03-19 03:00:42 +01:00
Andreas Kling
46577a6948
GTextEditor: Fix invalidation glitches in single-line mode.
2019-03-19 02:45:49 +01:00
Andreas Kling
f88e550998
LibGUI: More work on GInputBox.
...
- If the GInputBox has a parent and the parent is a GWindow, center the
input box window within the parent window. This looks quite nice.
- Stop processing events in a nested event loop immediately after it's
been asked to quit.
- Fix GWidget::parent_widget() behavior for non-widget parents.
2019-03-19 02:22:49 +01:00
Andreas Kling
a6538feed1
LibGUI: Add GInputBox for getting a string from a modal dialog.
...
Use this to implement some of the toolbar actions in IRCClient. :^)
2019-03-19 01:41:00 +01:00
Andreas Kling
43304d2adf
WindowServer: Add special treatment for modal windows.
...
While a WSClientConnection has a modal window showing, non-modal windows
belonging to that client are not sent any events.
2019-03-19 00:52:39 +01:00
Andreas Kling
57ff293a51
LibGUI: Implement nested event loops to support dialog boxes.
...
This patch adds a simple GMessageBox that can run in a nested event loop.
Here's how you use it:
GMessageBox box("Message text here", "Message window title");
int result = box.exec();
The next step is to make the WindowServer respect the modality flag of
these windows and prevent interaction with other windows in the same
process until the modal window has been closed.
2019-03-19 00:01:02 +01:00
Andreas Kling
a319641fc4
GIODevice: Remove debug spam.
2019-03-18 15:36:16 +01:00
Andreas Kling
9ad076178a
GIODevice: Add a read_all() that returns a ByteBuffer with all we can read.
...
Use this to implement file opening in TextEditor.
2019-03-18 14:38:30 +01:00
Andreas Kling
8e3d0a23d5
LibGUI: Add GTCPSocket and base class GSocket (inherits from GIODevice.)
...
And use these to do the line-by-line reading automagically instead of having
that logic in IRCClient. This will definitely come in handy.
2019-03-18 14:09:58 +01:00
Andreas Kling
d466f2634d
LibGUI: Add GTableModel::Role::ForegroundColor.
...
This makes it possible to specify the text color for each table cell.
Use this to make the IRCClient show unread window list items in red.
2019-03-18 04:54:07 +01:00
Andreas Kling
77a782a67e
LibGUI: Don't crash if calling GClipboard::set_data() with a null string.
2019-03-18 02:59:08 +01:00
Andreas Kling
ce7017e1ec
LibGUI: Add GFile and base class GIODevice.
...
Working with the LibC API's is tedious, so let's add some comfy C++ API's.
2019-03-17 15:54:43 +01:00
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
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
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
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
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
5c2d405e1f
IRCClient: Add menus.
2019-03-16 01:10:48 +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
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
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
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
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
ce7c302933
Kernel: Oops, gettimeofday()'s tv_usec should be micro, not milliseconds.
2019-03-13 03:25:18 +01:00
Andreas Kling
10dcd3a47f
GTextEditor: Make sure the scroll corner helper widget is filled in.
2019-03-11 12:52:07 +01:00
Andreas Kling
5d69bf06d2
LibGUI: Don't fill widgets with background color by defualt.
2019-03-10 13:16:36 +01:00
Andreas Kling
6836e21d1c
ProcessManager: Tidy up the memory stats and align everything nicely.
2019-03-10 12:34:44 +01:00
Andreas Kling
8017c1e17c
GTextEditor: Let the Tab key insert up to 4 spaces.
2019-03-10 11:08:36 +01:00
Andreas Kling
48e4b3e751
LibGUI: Preserve selection when resorting a GSortingProxyTableModel.
2019-03-10 02:13:59 +01:00
Andreas Kling
6c70629a49
LibGUI: Make buttons a little bit sharper.
2019-03-10 00:58:27 +01:00
Andreas Kling
b4a099d212
GTextEditor: Allow jumping lines by hitting Left/Right at start/end of line.
2019-03-09 22:02:35 +01:00
Andreas Kling
76094128e7
LibGUI: Fix small painting glitch in GScrollBar buttons.
2019-03-09 21:51:36 +01:00
Andreas Kling
963e95cb1a
GTableView: Minor painting cleanup.
2019-03-09 21:38:13 +01:00
Andreas Kling
0a7137617d
GTextEditor: Simplify painting of the ruler.
2019-03-09 21:30:16 +01:00
Andreas Kling
b8f999cbef
About+LibGUI: Use a GBoxLayout for the About app.
2019-03-09 21:09:29 +01:00
Andreas Kling
eac3a6ad52
GEventLoop: Make the server fd/pid global, and only connect to server once.
2019-03-09 17:34:09 +01:00
Andreas Kling
e009be5973
LibGUI: Use PainterStateSaver in GStyle::paint_button().
2019-03-09 16:56:26 +01:00
Andreas Kling
3c2139b824
GTextEditor: Use Painter save/restore to simplify.
2019-03-09 16:48:43 +01:00
Andreas Kling
0d5e6593b2
AK: Add a basic QuickSort template implementation.
...
It was depressing not being able to capture anything when passing a lambda
to qsort_r() so let's just have our own QuickSort. I was gonna have to do
this eventually anyway. :^)
2019-03-09 16:20:12 +01:00
Andreas Kling
e14dd06b8c
FileManager: Hook up a GSortingProxyTableModel so we get sorted files. :^)
...
The next step here is coming up with a nice way to always put directories
ahead of files.
2019-03-09 14:52:25 +01:00
Andreas Kling
7d2c962836
LibGUI: Minor tidying.
2019-03-09 14:39:24 +01:00
Andreas Kling
46caa2663b
LibGUI: Use a separate data role for the table model sorting order.
...
This allows data to be displayed nicely while sorting happens based on some
underlying raw data. :^)
2019-03-09 14:24:34 +01:00
Andreas Kling
3681a402ba
GTableView: Allow changing sort options by clicking column headers.
...
Also paint the sorted column slightly differently to indicate what's up.
2019-03-09 13:59:01 +01:00
Andreas Kling
7d1142c7d9
Make it possible to sort a GTableModel by column+order.
...
This is accomplished by putting a GSortingProxyTableModel between the model
and the view. It's pretty simplistic but it works for this use case. :^)
2019-03-09 13:33:52 +01:00
Andreas Kling
5a28392660
GTextEditor: Use a subwidget for the scrollbar corner and tighten clipping.
2019-03-08 18:58:40 +01:00
Andreas Kling
ccda716028
GTextEditor: Backspace and Delete should work regardless of modifier state.
2019-03-08 18:50:14 +01:00
Andreas Kling
032549d7bf
GTextEditor: Refactor selection into a GTextRange class.
...
This is a bit more expressive than "selection start + current cursor".
2019-03-08 18:28:24 +01:00
Andreas Kling
f40d11f06d
LibGUI+WindowServer: Implement drag-to-select behavior in GTextEditor.
...
To make this feel right, I needed to start passing keyboard modifiers along
with mouse events. That allows shift-clicking to extend the selection. :^)
2019-03-08 17:53:02 +01:00
Andreas Kling
6d172725c0
GTextEditor: Fix text_position_at() behavior when passed negative values.
2019-03-08 17:13:31 +01:00
Andreas Kling
c4937f01d8
GTextEditor: Simplify delete_selection().
2019-03-08 15:55:58 +01:00
Andreas Kling
5602f3be6c
GTextEditor: Ctrl+A should select the entire document.
2019-03-08 14:12:41 +01:00
Andreas Kling
220c7b5f75
GTextEditor: Replace selection on input or Backspace/Delete.
2019-03-08 14:10:34 +01:00
Andreas Kling
48d48679b0
GTextEditor: Work on cut/copy/paste operations.
2019-03-08 14:08:15 +01:00
Andreas Kling
b8581b0069
Seal clipboard buffers after copying data into them.
...
This is just a quick safety mechanism to ensure that nobody alters the
contents of a clipping after it's been set.
Ultimately this will be replaced by a more sophisticated SHM object.
2019-03-08 13:33:35 +01:00
Andreas Kling
6820f9e14f
WindowServer+LibGUI: Add a server-side clipboard.
...
On the client side, use GClipboard's data() and set_data(String) to access
the global clipboard. :^)
2019-03-08 13:27:19 +01:00
Andreas Kling
eda0866992
Add a C++ helper class for working with shared buffers.
...
This is a bit more comfortable than passing the shared buffer ID manually
everywhere and keeping track of size etc.
2019-03-08 12:24:05 +01:00
Andreas Kling
6576ac8332
GTextEditor: Add selected_text() function.
...
I don't have a clipboard to actually put the copied selection onto yet,
so just print the selected text to stdout so we can see what it is.
2019-03-08 01:59:59 +01:00
Andreas Kling
77359a5360
LibGUI: Only activate keyboard shortcuts on KeyDown, not KeyUp.
2019-03-08 01:59:49 +01:00
Andreas Kling
b5521e1b0d
GTextEditor: Add basic selection support.
2019-03-08 00:49:45 +01:00
Andreas Kling
949c98c5af
LibGUI: Implement GToolbar separators.
2019-03-07 23:01:36 +01:00
Andreas Kling
27b0aab13e
GTextEditor: Unbreak forward merge with Delete.
2019-03-07 20:15:05 +01:00
Andreas Kling
9867fe1025
GTextEditor: Add a ruler column that always shows the line numbers.
2019-03-07 20:05:05 +01:00
Andreas Kling
f13c62f225
GTextEditor: Fix double effect of backspace/delete in some cases.
2019-03-07 17:18:22 +01:00
Andreas Kling
f8b72ab3ab
GTextEditor: Add basic PageUp/PageDown navigation support.
2019-03-07 17:11:17 +01:00
Andreas Kling
187d7cb400
GTextEditor: Add write_to_file(String path) :^)
2019-03-07 17:06:11 +01:00
Andreas Kling
a5bc20c733
GTextEditor: Support starting with an empty document.
2019-03-07 16:51:47 +01:00
Andreas Kling
43d56b6f3a
GTextEditor: Support splitting lines at the cursor with the Return key.
2019-03-07 16:49:21 +01:00
Andreas Kling
a64b71fb3d
GTextEditor: Support forward delete/merge with the Delete key.
2019-03-07 16:33:20 +01:00
Andreas Kling
38662f884d
GTextEditor: Merge with previous line if backspacing at column 0.
2019-03-07 16:15:25 +01:00
Andreas Kling
6094f592a9
GTextEditor: More work on basic line editing. Insert/remove characters.
2019-03-07 16:04:21 +01:00
Andreas Kling
8425ea971a
GTextEditor: Start working on editing, starting with inserting newlines.
2019-03-07 15:52:11 +01:00
Andreas Kling
b4df33e453
GTextEditor: Only paint lines inside the dirty rect.
...
This dramatically improves performance in large documents. :^)
2019-03-07 15:03:38 +01:00
Andreas Kling
ce35cddb1b
GTextEditor: Let's use a Vector for the line backing store.
...
I'm eventually gonna want to replace this with something more clever,
like a automagically splicing vector or something, but for now, at least
we move away from immutable Strings.
2019-03-07 14:35:32 +01:00
Andreas Kling
a21ecd440a
GTextEditor: Allow moving the cursor by clicking.
2019-03-07 14:02:10 +01:00
Andreas Kling
9997992907
GTextEditor: Make the cursor invalidation work with the padding().
2019-03-07 13:54:02 +01:00
Andreas Kling
60c1ab5fbe
GTextEditor: Scroll the cursor into view before updating it.
2019-03-07 13:34:00 +01:00
Andreas Kling
9591acc212
GTextEditor: Remove some debug spam.
2019-03-07 13:26:02 +01:00
Andreas Kling
77198ef735
GTextEditor: Simplify update_cursor().
2019-03-07 13:23:17 +01:00
Andreas Kling
6a6bcc5daf
GTextEditor: Add Home/End and Ctrl+Home/Ctrl+End navigation shortcuts.
...
For start/end of line and start/end of document respectively.
2019-03-07 13:21:51 +01:00
Andreas Kling
1ac71d1fb1
GTextEditor: Improvements to cursor rendering.
...
The view now scrolls along with you as you move the cursor around.
2019-03-07 13:13:25 +01:00
Andreas Kling
dff57909a7
GTextEditor: Only draw the cursor line background shade when focused.
2019-03-07 02:26:44 +01:00
Andreas Kling
6db132069f
GTextEditor: Draw the cursor line in a slightly darker shade.
2019-03-07 02:24:46 +01:00
Andreas Kling
1f92636c6d
GTextEditor: Make the cursor blink while the editor is focused.
2019-03-07 01:05:35 +01:00
Andreas Kling
ca65ca2f2d
TextEditor: Show the current cursor position in the statusbar.
2019-03-07 00:46:29 +01:00
Andreas Kling
9158de6c41
Begin working on a graphical TextEditor.
...
It's gonna be a wrapper around a new GTextEditor widget so I can easily
reuse the functionality anywhere I need it. :^)
2019-03-07 00:31:06 +01:00
Andreas Kling
7df1121e1c
LibGUI: GTableModel::data() should take a GModelIndex instead of int,int.
2019-03-06 19:56:47 +01:00
Andreas Kling
dc4e6dd7bc
LibGUI: Fix LibGUI::to_string() for GVariant::Type::Float.
2019-03-06 19:49:59 +01:00
Andreas Kling
09ecef6299
GTableView: Ignore right clicks for now.
2019-03-06 19:44:18 +01:00
Andreas Kling
31d6b640eb
Add a bold variant of Katica and make that the system's default bold font.
...
..and do some minor tweaks to the font rendering code.
2019-03-06 14:50:27 +01:00
Andreas Kling
66a5ddd94a
More work on the variable-width font support.
...
Katica is now the default system font, and it looks quite nice. :^)
I'm gonna need to refine the GTextBox movement stuff eventually,
but it works well-enough for basic editing now.
2019-03-06 14:06:40 +01:00
Andreas Kling
7f6c81d90f
Implement basic support for variable-width fonts.
...
Also add a nice new font called Katica. It's not used anywhere yet but
I'm definitely itching to start using it. :^)
2019-03-06 12:52:41 +01:00
Andreas Kling
0a86366c71
Make a preparation pass for variable-width fonts.
2019-03-06 11:03:10 +01:00
Andreas Kling
086a0fc969
LibGUI: Let GApplication::exec() call exit() instead of returning to main().
...
This sidesteps the problem of having various things on the heap that don't
get torn down. It's obviously not a great solution, but it'll work for now.
2019-03-05 12:48:59 +01:00
Andreas Kling
d932c03843
GTableView: Tweak focus appearance for selected items.
2019-03-04 11:17:25 +01:00