1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 02:08:11 +00:00
Commit graph

319 commits

Author SHA1 Message Date
Andreas Kling
a635619cc0 GTabWidget: Rename get_active_tab() => active_tab_index() 2019-09-07 16:57:26 +02:00
Jesse Buhagiar
3f05799e41 LibGUI: GTabWidget can now return active tab index
`GTabWidget` now allows the user/caller to get the currently active
tab widget, meaning that actions that are applied globally (such as
an 'Apply' or 'OK' button) can now react to specific tabs etc.
2019-09-07 16:51:15 +02:00
Jesse Buhagiar
ecbc0322c1 Applications: Create a display properties manager
An interactive application to modify the current display settings, such as
the current wallpaper as well as the screen resolution. Currently we're
adding the resolutions ourselves, because there's currently no way to
detect was resolutions the current display adapter supports (or at least
I can't see one... Maybe VBE does and I'm stupid). It even comes with
a very nice template'd `ItemList` that can support a vector of any type,
which makes life much simpler.
2019-09-07 16:51:15 +02:00
Andreas Kling
af14b8dc59 LibC: Make "errno" thread-specific
Now that the kernel supports thread-local storage, we can declare errno
with the __thread keyword, which causes it to be per-thread.

This should fix all the stupid issues that happen when many threads use
the same errno. :^)
2019-09-07 15:57:02 +02:00
Andreas Kling
56e0e6be56 LibC: Borrow a slightly more functional getopt()
We were already borrowing a getopt() from the BSD family until the day
we write our own. This patch borrows a slightly more modern one so we
also get getopt_long().

Fixes #190.

See also #91 for the desire to eventually NIH our own getopt()..
2019-09-06 20:03:16 +02:00
Andreas Kling
6ab498edf7 GTextEditor: Paint line numbers with TopRight text alignment
This makes sure they line up with the first visual line for wrapped
lines that span multiple visual lines.
2019-09-06 19:24:16 +02:00
Andreas Kling
a791b86afa LibDraw: Add TextAlignment::TopRight
Also tidy up the alignment code to use switch statements.
2019-09-06 19:23:54 +02:00
Andreas Kling
73fdbba59c AK: Rename <AK/AKString.h> to <AK/String.h>
This was a workaround to be able to build on case-insensitive file
systems where it might get confused about <string.h> vs <String.h>.

Let's just not support building that way, so String.h can have an
objectively nicer name. :^)
2019-09-06 15:36:54 +02:00
Andreas Kling
b4a2bb9383 GScrollBar: Scrolling with the mouse wheel should use step increments 2019-09-06 15:01:08 +02:00
rhin123
1adec6d54b TextEditor: Removed unnecessary use of for_each
Didn't notice that m_visual_rect existed :P
2019-09-06 07:17:57 +02:00
Andreas Kling
7a906ab539 LibGUI: Teach GScrollableWidget how to hide unnecessary scrollbars
This is now an opt-in mode enabled by calling:

    should_hide_unnecessary_scrollbars(true)

This patch enables the mode for GTreeView and GTableView. :^)
2019-09-05 21:37:15 +02:00
Sergey Bugaev
6d3f52c4a4 Terminal: Add some basic emoji support
This is not as perfect as it is elsewhere in the system, as we cannot
really change how terminal "thinks about" characters and bytes. What
we can do though, and what this commit does, is to *render* emojis, but
make it seem as if they take up all the space, and all the columns their
bytes would take if they were all regular characters.
2019-09-05 16:37:39 +02:00
Sergey Bugaev
22e6978c71 WindowServer+LibGUI+FontEditor: Encode special characters as UTF-8 2019-09-05 16:37:39 +02:00
Sergey Bugaev
84bc6a92a7 LibDraw: Add emoji drawing support to Painter
From here on, all strings displayed to the user are expected to
be encoded as UTF-8. The next few commits will deal with a few
existing places where this requirement is currently violated.

https://github.com/SerenityOS/serenity/issues/490
2019-09-05 16:37:39 +02:00
Sergey Bugaev
27380b9d2b LibDraw: Add emoji support to the Font class
https://github.com/SerenityOS/serenity/issues/490
2019-09-05 16:37:39 +02:00
Sergey Bugaev
9d64c60e01 LibDraw: Introduce an Emoji class
This class can locate and load emojis, which are expected to be stored
as regular PNG images at /res/emoji/U+XXXX.png, where XXXX is the
character codepoint.

https://github.com/SerenityOS/serenity/issues/490
2019-09-05 16:37:39 +02:00
rhin123
5594f19624 TextEditor: Added GCommonActions 2019-09-05 09:40:54 +02:00
Andreas Kling
c4d59f64d1 GDirectoryModel: Add a 32x32 filetype icon for sound files 2019-09-04 21:48:03 +02:00
Andreas Kling
6693e56603 LibAudio: Allow tweaking how much get_more_samples() reads from file 2019-09-04 20:13:32 +02:00
Andreas Kling
a98de0b6ee LibAudio: Add AClientConnetion::try_enqueue() API
This is a variant of the enqueue() API that returns immediately and
may fail. It's useful when you don't want to block until the audio
server can receive your sample buffer.
2019-09-04 20:12:24 +02:00
Andreas Kling
123a3cad77 GLayout: Change default spacing to 3 pixels 2019-09-04 18:54:03 +02:00
Andreas Kling
a6bb955c9d GSplitter: Change default spacing to 3 pixels 2019-09-04 18:53:46 +02:00
Andreas Kling
16de02cce0 CIODevice: Add is_open() 2019-09-04 15:13:55 +02:00
rhin123
deb31645aa GAction: Added GCommonActions as a template to create standard actions
Instead of creating actions from the ground up, GCommonActions contains
all related information to that common action. Such as the icon,
keybind, ect.
2019-09-04 06:56:29 +02:00
Andreas Kling
5e34e43b0f LibGUI: Add GAboutDialog, a simple way to show a nice about box in apps 2019-09-02 19:45:55 +02:00
Conrad Pankoff
17cf3c143a LibC: Support _PC_PATH_MAX in [f]pathconf 2019-09-02 08:30:04 +02:00
Andreas Kling
b615a5c780 LibGUI: Add a way for GWidgets to do custom layout on child hide/show
This solves an issue in GScrollableWidget where hiding one of the two
scrollbars needs to trigger a relayout since the other one should grow
into the "shared space" in the bottom right corner.

A GWidget can now override custom_layout() which will be called at any
time we would normally delegate work to the GLayout, e.g on resize
or child visibility changes, size policy changes, etc.
2019-09-01 20:51:20 +02:00
Andreas Kling
77a58119e7 GTextEditor: Hide the horizontal scrollbar when line-wrapping is on 2019-09-01 20:34:50 +02:00
Andreas Kling
906582d8df GTextEditor: Fix wrong width calculations with line-wrapping enabled
There were various little mistakes in the width calculations used by
the line-wrapping layout code.

With this patch, we should no longer see the horizontal scrollbar get
enabled with line-wrapping enabled. I will hide the scrollbar in a
separate patch.
2019-09-01 20:04:25 +02:00
Andreas Kling
74ca299b4b GTextEditor: Make visual lines stop after their last character
Instead of letting each visual line run to the end of the editor when
wrapping lines, stop each visual line where it runs ouf characters.

Fixes #493.
2019-09-01 17:30:23 +02:00
Andreas Kling
72a29d72d3 Rect: Add contains_vertically(y) and contains_horizontally(x) 2019-09-01 17:28:49 +02:00
Andreas Kling
c686264703 LibThread: Add missing install.sh script
This unbreaks the SDL port build.
2019-09-01 16:59:12 +02:00
Rhin
3e6a0a0533 TextEditor: Stopped disappearing text at end of document (#505)
text_position_at() was returning -1 if the position wasn't in
the bounds of a visual line. Now if the position is past the last
line, we simply return the last line index instead of -1.

Fixes #502.
2019-09-01 12:34:14 +02:00
Andreas Kling
3e2e086011 LibGUI: Add a way for GWidget subclasses to learn that the font changed
Use this in GTextEditor to update the vertical scrolling step size so
we always scroll one-line-at-a-time.
2019-09-01 12:26:35 +02:00
Andreas Kling
21ee24b995 GFontDatabase: Iterate the font database in alphabetical order
This makes font menus look nicer.
2019-08-29 19:30:48 +02:00
Andreas Kling
63e6b09816 WindowServer+LibGUI: Add support for nested menus
It's now possible to add a GMenu as a submenu of another GMenu.
Simply use the GMenu::add_submenu(NonnullOwnPtr<GMenu>) API :^)

The WindowServer now keeps track of a stack of open menus rather than
just one "current menu". This code needs a bit more work, but the basic
functionality is now here!
2019-08-29 06:36:29 +02:00
Rhin
d3ebd8897f GTextEditor: Set content size based on the visual line rects (#500)
When we update our content size, the width & height is now calculated
from the visual line rect size. Also now after we recompute all visual
lines, if the total height is different, we re-update the content size.
2019-08-29 06:26:24 +02:00
Andreas Kling
50ef2216fa GTextEditor: Optimize write_to_file() with ftruncate()
Compute the final file size and ftruncate() the destination file to the
right size immediately instead of incrementally appending to it.

This kind of optimization belongs in the kernel, but until we have it
there, this makes saving text files a whole lot faster. :^)
2019-08-28 19:32:45 +02:00
Andreas Kling
c4b1456c88 GWindow: Allow clients to prevent close requests from closing
This is done by hooking the new on_close_request callback and returning
GWindow::CloseRequestDecision::StayOpen (instead of ...::Close.)
2019-08-27 20:35:37 +02:00
Andreas Kling
fcf85d8fef GTextEditor: Always call did_change() after deleting with backspace
This is needed for the on_change callback to fire.
2019-08-27 20:16:52 +02:00
Andrew Weller
ed0553fe10 GTextEditor: Fixed bug on KeyCode::Key_Right pressed.
Pressing right did nothing when the very last characters of the buffer
were selected.

The expected action would be for the cursor to move to the end of the
buffer.

This patch fixes that.
2019-08-27 07:17:22 +02:00
Andrew Weller
b50ffaf7e1 GTextEditor: Fixed bug in find_prev
Find_prev returned invalid when the contents of the file were equal to
the contents of the search box.

This is due to the checker walking on an empty character at the end of
a line.
2019-08-27 07:17:22 +02:00
Andreas Kling
1e604b7984 WindowServer+LibGUI: Show action icons in the menus when possible
Any GAction that has an icon assigned will now show up with that icon
when added to a menu as well.

I made the menu items 2px taller to accomodate the icons. I think this
turned out quite nice as well :^)
2019-08-26 18:54:44 +02:00
Sergey Bugaev
3439a479af LibThread: Move CLock to LibThread::Lock
And adapt all the code that uses it.
2019-08-26 11:31:14 +02:00
Sergey Bugaev
0826cc5a35 LibCore: Remove CThread
It's been replaced with Thread::Thread.
2019-08-26 11:31:14 +02:00
Sergey Bugaev
7c92f7d537 LibGUI: Port threading to LibThread 2019-08-26 11:31:14 +02:00
Sergey Bugaev
e1a6f8a27d LibThread: Introduce a new threading library
This library is meant to provide C++-style wrappers over lower
level APIs such as syscalls and pthread_* functions, as well as
utilities for easily running pieces of logic on different
threads.
2019-08-26 11:31:14 +02:00
Andreas Kling
e8e8741c88 LibGUI+TextEditor: Make GButton activate its action if present
Previously even if you assigned a GAction to a GButton, you still had
to activate() the action manually by hooking the GButton::on_click
callback.
2019-08-25 21:46:39 +02:00
Andreas Kling
a6be213287 GTextEditor: Add add_custom_context_menu_action()
This allows embedders to add their own custom GAction set to a text
editor's context menu.
2019-08-25 21:33:08 +02:00
Rok Povsic
2ca8158a73 LibC: Add realpath 2019-08-25 19:47:37 +02:00