1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-13 07:57:35 +00:00
Commit graph

5015 commits

Author SHA1 Message Date
howar6hill
10e0d4a196
LibCore: Add format option for DateTime::to_string() (#1358) 2020-03-08 11:35:26 +01:00
0xtechnobabble
b6307beb6e LibJS: Implement if statements
If statements execute a certain action or an alternative one depending
on whether the tested condition is true or false, this commit helps
establish basic control flow capabilities in the AST.
2020-03-08 11:15:07 +01:00
0xtechnobabble
a96bf2c22e LibJS: Implement logical expressions
Logical expressions are expressions which can return either true or
false according to a provided condition.
2020-03-08 11:15:07 +01:00
0xtechnobabble
4e62dcd6e6 LibJS: Add typed comparison operator
The `===` operator allows us to compare two values while taking their
type into consideration.
2020-03-08 11:15:07 +01:00
0xtechnobabble
3fb0ff102c LibJS: Allow the dumping of literals that aren't numbers 2020-03-08 11:15:07 +01:00
Tibor Nagy
0d17e3bfa6 LibGUI: Fix null-termination of TextDocumentLine 2020-03-08 10:31:48 +01:00
Andreas Kling
0c7058aaa0 LibJS: Include the operator in BinaryExpression dumps 2020-03-07 23:17:07 +01:00
Andreas Kling
1611071ac7 LibJS: Flesh out JS::Value a little bit more 2020-03-07 23:17:07 +01:00
Andreas Kling
d52130836e LibJS: Simplify LogStream::operator<<(JS::Value) and move to .cpp file 2020-03-07 23:17:07 +01:00
Elisée Maurer
cbe0053a97 LibJS: Fix string representation for value of type undefined 2020-03-07 23:15:36 +01:00
Andreas Kling
f5476be702 LibJS: Start building a JavaScript engine for SerenityOS :^)
I always tell people to start building things by working on the thing
that seems the most interesting right now. The most interesting thing
here was an AST + simple interpreter, so that's where we start!

There is no lexer or parser yet, we build an AST directly and then
execute it in the interpreter, producing a return value.

This seems like the start of something interesting. :^)
2020-03-07 19:42:11 +01:00
Andreas Kling
7a9cb2dfca LibWeb: Cache the <body background> style image value
This way we don't refetch the background image every time style is
recomputed (e.g when hovering different elements.)
2020-03-07 11:17:18 +01:00
Andreas Kling
830a57c6b2 LibWeb: Rename directory LibHTML => LibWeb
Let's rename this to LibWeb since it aims to provide more parts of the
web platform than just HTML. :^)
2020-03-07 10:32:51 +01:00
Andreas Kling
7a6c4a72d5 LibWeb: Move everything into the Web namespace 2020-03-07 10:27:02 +01:00
Shannon Booth
6a3b12664a LibGUI: Move Icon and FontDatabase into the GUI namespace
We also clean up some old references to the old G prefixed GUI classes

This also fixes a potential bug with using: C_OBJECT_ABSTRACT(GAbstractButton)
instead of C_OBJECT_ABSTRACT(AbstractButton)
2020-03-07 01:33:53 +01:00
Shannon Booth
57f1c919df LibCore: Remove all remaining C prefix references
LibCore's GZip is also moved into the Core namespace with this change.
2020-03-07 01:33:53 +01:00
rhin123
72ef3e529a TerminalWidget: Implement ALT selection
When holding ALT & selecting text, the terminal now forms a rectangle
selection similar to other terminal behaviors.
2020-03-06 20:20:02 +01:00
howar6hill
4ba206b7e5 LibC: Fix a indentation problem in time.cpp 2020-03-06 20:15:07 +01:00
Andreas Kling
52954ccce6 LibC: Fix crash in free() now that mprotect() works correctly
After we mprotect(PROT_NONE) an allocation block, we can't expect to
read the m_size from that block right after. :^)
2020-03-06 10:52:36 +01:00
Andreas Kling
8bb361889c AK: Remove Optional::operator bool()
This was causing some obvious-in-hindsight but hard to spot bugs where
we'd implicitly convert the bool to an integer type and carry on with
the number 1 instead of the actual value().
2020-03-06 10:32:58 +01:00
howar6hill
ae233c1e82 LibC: Implement time formatting functions, partially support timezone
Also fix a bug in mktime() caused by forgetting to check if the present year
is a leap year.
2020-03-06 10:32:48 +01:00
Andreas Kling
211e938234 LibGUI: Fix missing equality checks in Window::did_remove_widget()
We should only detach from the cursor tracking widgets on unparenting
if they were the same widget that's being unparented!

Thanks to @agoose77 for spotting this!

Fixes #1354.
2020-03-05 19:49:18 +01:00
Tibor Nagy
c69686f1b2 LibGUI: Fix group name columns in FileSystemModel 2020-03-05 16:36:05 +01:00
Andreas Kling
3edcaa9b99 LibGUI: Implement set_property() on Widget and AbstractButton
This makes it possible for an RPC client to modify some interesting
widget properties.
2020-03-05 15:50:22 +01:00
Andreas Kling
42f2696355 LibCore: Add a way to set an individual Core::Object property remotely 2020-03-05 15:50:22 +01:00
Andreas Kling
ca110a6e54 LibGUI: Make the ModelEditingDelegate constructor protected 2020-03-05 15:50:22 +01:00
Andreas Kling
4d5e144a6b LibGUI: Forget some of Window's widgets eagerly on widget unparenting
Previously the focused widget would only get cleared on replacement or
on destruction (being a WeakPtr and all.) This could lead to window
dispatching events to a focused widget after it had been removed from
the window's widget tree.

The same issue existed for the hovered widget, etc. So this patch
makes sure that we eagerly clear the various widget pointers in Window
immediately when they are removed from the window's widget tree.
2020-03-05 15:48:57 +01:00
Andreas Kling
e23c5b7e83 LibGUI+Inspector: Highlight the currently remotely inspected widget
This patch adds a magenta rectangle around the currently inspected
widget. This allows you to browse an app's widget tree somewhat
visually using the Inspector. :^)
2020-03-05 14:42:05 +01:00
Andreas Kling
d16f8214d8 LibCore: Allow RPC clients to specify the currently inspected object
Add a SetInspectedObject call that tells us which Core::Object a remote
client is currently looking it. Objects get notified when they gain
their first inspector, and when they lose their last one.
2020-03-05 14:40:47 +01:00
Andreas Kling
a119d812e1 LibGUI: Make the default window title "GUI::Window"
Instead of "GWindow", that is. :^)
2020-03-05 09:25:05 +01:00
Andreas Kling
849fdc1c0b LibGUI: Make Layout a Core::Object and add basic serialization
This allows you to view layouts (as data) in Inspector.
2020-03-05 09:22:43 +01:00
Andreas Kling
6fa104ffd3 LibGUI: Ignore keyboard and mouse events in disabled widgets 2020-03-04 23:47:27 +01:00
Andreas Kling
e4f433dddd LibGUI: Remove unused GUI::Widget::click_event() 2020-03-04 21:21:46 +01:00
Andreas Kling
3a34323a78 LibGUI: TextEditor should paint text with disabled color when disabled 2020-03-04 21:19:35 +01:00
Andreas Kling
b29ff7b821 LibGUI: Don't use Core::Object::add() to instantiate dialogs
Now that add() returns a WidgetType&, we can't rely on the parent of a
GUI::Dialog to still keep it alive after exec() returns. This happens
because exec() will call remove_from_parent() on itself before
returning.

And so we go back to the old idiom for creating a GUI::Dialog centered
above a specific window. Just call GUI::Dialog::construct(), passing
the "parent" window as the last parameter.
2020-03-04 21:04:06 +01:00
Andreas Kling
dfa69b82b4 LibBareMetal: Don't try to print characters from a null pointer 2020-03-04 21:04:06 +01:00
Andreas Kling
028c011760 LibCore: Make Core::Object::add<ChildType> return a ChildType&
Since the returned object is now owned by the callee object, we can
simply vend a ChildType&. This allows us to use "." instead of "->"
at the call site, which is quite nice. :^)
2020-03-04 21:04:06 +01:00
Andreas Kling
0f3e57a6fb LibGUI: Use GUI::Window::set_main_widget<WidgetType>() in clients 2020-03-04 14:26:16 +01:00
Andreas Kling
4697195645 LibGUI: Use set_layout<LayoutType>() in lots of client code 2020-03-04 13:49:48 +01:00
Andreas Kling
03e0ddce52 LibGUI: Some more convenience functions for constructing widgets
This patch adds two new API's:

- WidgetType& GUI::Window::set_main_widget<WidgetType>();

  This creates a new main widget for a window, assigns it, and returns
  it to you as a WidgetType&.

- LayoutType& GUI::Widget::set_layout<LayoutType>();

  Same basic idea, creates a new layout, assigns it, and returns it to
  you as a LayoutType&.
2020-03-03 22:37:48 +01:00
Andreas Kling
0cafbbf09c LibGUI: Save some more state from AbstractButton
The more stuff we save in save_to() overrides, the more interesting it
becomes inspecting GUI programs. :^)
2020-03-03 22:37:48 +01:00
Andreas Kling
a26b63a958 LibGUI: Remove Button& parameter from Button::on_click hook
There was but a single user of this parameter and it's a bit tedious
to write it out every time, so let's get rid of it.
2020-03-03 17:02:38 +01:00
Andreas Kling
686ade6b5a AK: Make quick_sort() a little more ergonomic
Now it actually defaults to "a < b" comparison, instead of forcing you
to provide a trivial less-than comparator. Also you can pass in any
collection type that has .begin() and .end() and we'll sort it for you.
2020-03-03 16:02:58 +01:00
Andreas Kling
8e8e8c801c LibGUI: Fix broken TreeView rendering with more than two columns
The computation of the tree column x offset was not taking padding into
account. This patch fixes that and collects the logic in a helper.
2020-03-02 23:05:04 +01:00
Liav A
7d39e380f9 LibBareMetal: Add IOAddress class 2020-03-02 22:23:39 +01:00
Liav A
dc01a71fac LibBareMetal: Add support for kernel log stream 2020-03-02 22:23:39 +01:00
howar6hill
055344f346 AK: Move the wildcard-matching implementation to StringUtils
Provide wrappers in the String and StringView classes, and add some tests.
2020-03-02 10:38:08 +01:00
Andreas Kling
22d0a6d92f AK: Remove unnecessary casts to size_t, after Vector changes
Now that Vector uses size_t, we can remove a whole bunch of redundant
casts to size_t.
2020-03-01 12:58:22 +01:00
Andreas Kling
70b940c307 LibMarkdown: Fix breakage from Vector using size_t
It's no longer possible rely on negative VectorIterator when iterating
backwards. It would be nice to have a general solution for reverse
iteration, but for now let me just patch this up.
2020-02-29 17:06:57 +01:00
Andrew Kaster
c678b35043 LibELF: Use MAP_PRIVATE for file-backed mmaps in ELFDynamicLoader
Clean up some unused code, clean up FIXMEs, and remove premature
--dynamic-loader/-pie from LinkDemo (so it runs again on master)
2020-02-29 10:58:45 +01:00