Andreas Kling
3628eda0db
Ladybird/FontPluginQt: Implement default font virtuals
2022-12-25 07:58:58 -07:00
Andreas Kling
c230264c63
Ladybird/WebView: Ensure JS console is initialized before handling input
2022-12-25 07:58:58 -07:00
Andreas Kling
6ee92a1fd0
Ladybird/WebView: Implement page_did_request_scroll_into_view()
...
This makes #foo links actually scroll the #foo element into view.
2022-12-25 07:58:58 -07:00
Andreas Kling
345faff586
Ladybird/WebView: Notify LibWeb whenever the viewport is scrolled
2022-12-25 07:58:58 -07:00
Andrew Kaster
488da351c0
Ladybird/CMake: Install resources and Lagom libraries alongside ladybird
...
This setup should allow the package maintainers who are looking to
distribute ladybird on their distributions to use CMake to install
ladybird using cmake install rules rather than having to write their own
2022-12-25 07:58:58 -07:00
Andrew Kaster
3403b1fd77
Ladybird/WebView: Search for resources using installed location
...
Reorganize the logic for initializing s_serenity_resource_root.
Now, we initialize it in platform_init(), and move platform_init to the
top of initialize_web_engine.
Add a branch at the end of the function to check
``QApplication::applicationDirPath()`` for the location of the
executable, and base the location of resources on that.
In an installed configuration, this will be /some/path/bin, with the
resource root set to /some/path/share/, looking for files in
/some/path/share/res/resource-type.
This matches up with some upcoming CMake changes to install resources in
CMAKE_INSTALL_DATADIR.
2022-12-25 07:58:58 -07:00
Diego Iastrubni
0a38d246f9
Ladybird: Fix some crashes related to keyboard events
...
Don't try to get the unicode value of an empty string.
2022-12-25 07:58:58 -07:00
Andreas Kling
ef757f33da
Ladybird: Implement the Web::Platform::ImageCodecPlugin interface
...
...and move it to separate files while we're at it.
2022-12-25 07:58:58 -07:00
Andrew Kaster
4334929323
Ladybird/CMake: Link against LibSoftGPU to fix WebGL with serenity LibGL
...
In the future, ladybird should probably use a QOpenGLWidget or similar
platform plugin to use the native GL implementation instead of the one
in serenity.
2022-12-25 07:58:58 -07:00
Timothy Flynn
4850a2d272
Ladybird: Update pointer to current tab when the selected tab changes
...
This allows requests like dumping the DOM tree to be forwarded to the
correct tab. Otherwise, the event would be forwarded to the most
recently created tab.
2022-12-25 07:58:58 -07:00
Timothy Flynn
e04db5efed
Ladybird: Hook up the dump-cookies debug request to the cookie jar
2022-12-25 07:58:58 -07:00
Andreas Kling
0f1644f62d
Ladybird: Switch to next/previous tab with Ctrl+PageDown/PageUp
2022-12-25 07:58:58 -07:00
Andreas Kling
27b9cd13ee
Ladybird: Focus the location editor when creating a new tab
...
This lets you start typing a new URL right after pressing Ctrl+T.
2022-12-25 07:58:58 -07:00
Andreas Kling
031005de2d
Ladybird: Remove some awkward camelCase signal names
...
We use snake_case for everything except when we're forced by Qt to use
their camelCase names.
2022-12-25 07:58:58 -07:00
Andreas Kling
0c4ae810d7
Ladybird: Hide the hovered URL label on startup
2022-12-25 07:58:58 -07:00
Andreas Kling
4e3e5149d5
Ladybird: Show tooltips for <a title> text
2022-12-25 07:58:58 -07:00
Andreas Kling
ce38528fff
Ladybird: Allow scrolling with arrow keys and PageUp/PageDown
...
This will need further work to integrate well with content that listens
for key events, but at least this is better than doing nothing.
2022-12-25 07:58:58 -07:00
Andreas Kling
f4a9b382b1
Ladybird: Remove spacing between toolbar and web view
2022-12-25 07:58:58 -07:00
Andreas Kling
d74802e4e2
Ladybird: Show hovered link URLs in a conditional UI label
...
The tooltips for hovered links were super awkward when in a tooltip
2022-12-25 07:58:58 -07:00
Andreas Kling
aa27112d78
Ladybird: Tweak the QTabWidget look
2022-12-25 07:58:58 -07:00
Andreas Kling
8a657eaa34
Ladybird: Add a FontPlugin and try much harder to find suitable fonts
...
Instead of only looking at the SerenityOS default fonts, we now also
look recursively in /usr/share/fonts for suitable fonts that we can
load and use.
2022-12-25 07:58:58 -07:00
Andreas Kling
37d844fd66
Ladybird: Use only the Qt event loop to speed everything up :^)
...
This patch removes the dual-event-loop setup, leaving only the Qt event
loop. We teach LibWeb how to drive Qt by installing an EventLoopPlugin.
This removes the 50ms latency on all UI interactions (and network
requests, etc.)
2022-12-25 07:58:58 -07:00
Andreas Kling
dcab11f5e9
Ladybird: Fix build after LibWeb+LibJS GC changes
2022-12-25 07:58:58 -07:00
Luke Wilde
9789d8b769
Ladybird: Turn initialize_global_object() into a regular initialize()
...
See: https://github.com/SerenityOS/serenity/commit/cfa5885
2022-12-25 07:58:58 -07:00
Luke Wilde
1e7d4bc089
Ladybird: Retrieve console object from the realm's intrinsic
...
See: https://github.com/SerenityOS/serenity/commit/867ad03
2022-12-25 07:58:58 -07:00
Andreas Kling
ced442f426
Ladybird: Remove obsolete call to set_associated_realm()
2022-12-25 07:58:58 -07:00
Kemal Zebari
80edd654fa
Ladybird: Fix a few typos in README
2022-12-25 07:58:58 -07:00
Luke Wilde
c9e6967d7b
Ladybird: Update for LibJS realm changes
2022-12-25 07:58:58 -07:00
Andreas Kling
a14b00e046
Ladybird: Remove redundant subtraction of scrollbar from viewport rect
2022-12-25 07:58:58 -07:00
Andreas Kling
b1acf17d3c
Ladybird: Simplify awkward keyboard mapping code
2022-12-25 07:58:58 -07:00
Andreas Kling
90c0ae5e63
Ladybird: Update for LibJS global object construction changes
2022-12-25 07:58:58 -07:00
Andreas Kling
b1cc1bd47b
Ladybird: Remove unused PageClient override
2022-12-25 07:58:58 -07:00
Xexxa
5a5473a38e
Ladybird/Meta: Use reverse domain name notation in property list files
2022-12-25 07:58:58 -07:00
Filiph Sandström
7ddb433f99
Ladybird/Meta: Enable macOS high-dpi support
...
This also adds an Info.plist file required to properly
build macOS applications.
2022-12-25 07:58:58 -07:00
Andreas Kling
da23456f9e
Ladybird: Try decoding images with Qt if LibGfx fails us
...
We might as well ask Qt if it can decode images in case our own decoders
don't succeed.
2022-12-25 07:58:58 -07:00
Andreas Kling
11e5be050f
Ladybird: Enable HTTP pipelining
2022-12-25 07:58:58 -07:00
Andreas Kling
9073d60f00
Ladybird: Actually add request headers to outgoing HTTP requests
2022-12-25 07:58:58 -07:00
Filiph Sandström
d60f8807e3
Ladybird: Allow for setting the hompage through SettingsDialog
2022-12-25 07:58:58 -07:00
Filiph Sandström
91e5b6d4f5
Ladybird: Add SettingsDialog stub
2022-12-25 07:58:58 -07:00
Filiph Sandström
a838004725
Ladybird: Add Settings class
2022-12-25 07:58:58 -07:00
Andreas Kling
1b682e4b2c
Ladybird: Don't rewrite file:// URLs to HTTP
2022-12-25 07:58:58 -07:00
Andreas Kling
c216e714c7
Ladybird: Tweak inaccurate copyright year :^)
2022-12-25 07:58:58 -07:00
Diego Iastrubni
2905bda0f2
Ladybird: Add a protocol to the URL, when one is not set
...
When a http(s):// is not written by the user - lets manually add one.
2022-12-25 07:58:58 -07:00
Alec Murphy
700c709c00
Ladybird: Add Ctrl-W action to close current tab ( #28 )
2022-12-25 07:58:58 -07:00
Diego Iastrubni
35eb696884
Ladybird: Basic keyboard input ( #31 )
...
This handles most (?) of keyboard input. For some reason, "Ctrl+A"
and Enter are not working on google.com.
It can handle plain ASCII, I tested also Hebrew input,
and https://playbiolab.com/ (which is playable now!)
2022-12-25 07:58:58 -07:00
Andrew Kaster
1002de086e
Ladybird/Docs: Document Android build steps
2022-12-25 07:58:58 -07:00
Andrew Kaster
261f078a28
Ladybird/Meta: Add Android build
...
Build an Android APK file that, when configured properly in Qt Creator,
can be used to deploy the browser to an Android device.
The current build requires NDK 24, targets no less than Android API 30,
and Qt Creator 6.4.0.
2022-12-25 07:58:58 -07:00
Andreas Kling
7e42eae1a2
Ladybird: Add a separate license file
2022-12-25 07:58:58 -07:00
Andreas Kling
73c15ef56d
Ladybird: Don't try to append to the JS console before it's instantiated
2022-12-25 07:58:58 -07:00
Andreas Kling
45c6a8c479
Ladybird: Add files I forgot to commit :^)
2022-12-25 07:58:58 -07:00
Andreas Kling
79ce12a363
Ladybird: Remove debug spam about non-existent console messages
2022-12-25 07:58:58 -07:00
Andreas Kling
f2b126f4d7
Ladybird: Basic support for window.alert() and window.confirm()
2022-12-25 07:58:58 -07:00
Andreas Kling
aa5f886128
Ladybird: Add quick & dirty port of the JS console from Browser :^)
2022-12-25 07:58:58 -07:00
Daniel Bertalan
af5250b2cb
Ladybird: Fix compilation on macOS/Clang
...
- Silences the -Wuser-defined-literals warning which is triggered by our
use of the `sv` suffix for StringView
- Removes an unused captured `this` pointer [-Wunused-lambda-capture]
- Changes a JSONArray.h include to JSONObject.h to get the definition
for `JSONValue::serialize`. This is needed because template functions
are not exported for dylibs on macOS. This is a hack; the JSON headers
should be refactored so that each one includes the definition of
the template functions it sees. -- Maybe we should build with
-fvisibility-inlines-hidden on Linux to catch issues like this?
2022-12-25 07:58:58 -07:00
Filiph Sandström
d1d6a204fc
Ladybird: Replace StatusBar with ToolTip
...
This gives the actual webcontent more space to work with,
it also emulates how other browsers does it.
In the future we'd like to do something else since only ToolTip
can be visible at the same time.
2022-12-25 07:58:58 -07:00
Andreas Kling
bfc9057638
Ladybird: Tell Qt to let us manage HTTP redirects ourselves
2022-12-25 07:58:58 -07:00
Andreas Kling
2bbf2dfb9a
Ladybird: Update for removal of StringView(char const*)
2022-12-25 07:58:58 -07:00
Andreas Kling
80636d6779
Ladybird: Implement basic cookie support
...
We import the CookieJar class from Browser to do the work. Long-term
we should look for a way to share this code with Browser.
2022-12-25 07:58:58 -07:00
Filiph Sandström
ea7e637b6e
Ladybird: Fix title branding when switching tabs
2022-12-25 07:58:58 -07:00
Filiph Sandström
ace44dc13b
Ladybird: Hide TabBar if count <= 1
2022-12-25 07:58:58 -07:00
Andreas Kling
74c71804c7
Ladybird: Add "View Source" menu action (Ctrl+U)
2022-12-25 07:58:58 -07:00
Thitat Auareesuksakul
1400a160bc
Ladybird: Set singleStep for scroll bars in WebView
...
Sets singleStep to 24px, this allows you to scroll using your mouse
scroll wheel :^)
2022-12-25 07:58:58 -07:00
Thitat Auareesuksakul
d89fbf3aa0
Ladybird: Set pageStep for scroll bars in WebView
...
This allows PageUp/PageDown keys to scroll 1 viewport size at a time.
This also fixes the scroll bar drag handle to be a correct length.
2022-12-25 07:58:58 -07:00
Andreas Kling
096164ea1a
Ladybird: Revert accidentally commited local settings
2022-12-25 07:58:58 -07:00
Andreas Kling
487544d7b4
Ladybird: Port over part of the "Debug" menu from the SerenityOS browser
...
This is pretty messy, but we have to start somewhere. Eventually we
should find a way to share this code with SerenityOS.
2022-12-25 07:58:58 -07:00
David Gannerud
eea012472e
Ladybird: Prevent loading of invalid URL
...
Loading invalid URL will result in a crash.
2022-12-25 07:58:58 -07:00
Andreas Kling
b97c74331c
Ladybird: Don't include scrollbars in viewport rect size
2022-12-25 07:58:58 -07:00
Andreas Kling
a08e83e2cc
Ladybird: Check for errors while decoding favicons
2022-12-25 07:58:58 -07:00
Andreas Kling
50b3672f52
Ladybird: Add keyboard shortcut for focusing the location edit (Ctrl+L)
2022-12-25 07:58:58 -07:00
Andreas Kling
303fda074a
Ladybird: Fix build with Qt 6.2.4
2022-12-25 07:58:58 -07:00
Matthew Costa
7681ef25da
Ladybird: Expanded toolbar with browser history and home button
...
This patch takes the browser history code from the Serenity browser and
wires it up to the QT interface. This is tied in with a few extra
toolbar buttons associated with each tab.
2022-12-25 07:58:58 -07:00
Matthew Costa
67ab6dd2e6
Ladybird: Allow browser tabs to be closed
...
This is a small patch which wires up the tab close button.
2022-12-25 07:58:58 -07:00
Matthew Costa
8af5b49cba
Ladybird: Rudimentary tabbed browsing support
...
This patch removes the browser WebView from the window and places it
inside a Tab object, all wrapped up in a QT tab control. So far you can
create tabs, but can't close them.
2022-12-25 07:58:58 -07:00
Thitat Auareesuksakul
ec44691b56
Ladybird: Add basic cursor shape support in WebView
2022-12-25 07:58:58 -07:00
Andreas Kling
a7cb558783
Ladybird: Fix broken favicon conversion from Gfx::Bitmap to QPixmap
2022-12-25 07:58:58 -07:00
Alfonso Saavedra "Son Link
48de1fb1b1
Ladybird: Added Arch Linux/Manjaro required packages to build
2022-12-25 07:58:58 -07:00
Andreas Kling
f96b53f118
Ladybird: Stop using deprecated Qt API and re-enable deprecated warnings
2022-12-25 07:58:58 -07:00
Andreas Kling
419d3ec646
Ladybird: Use QtNetwork for HTTP and HTTPS requests
...
Until we can get our own RequestServer infrastructure up and running,
running the TLS and HTTP code in-process was causing lots of crashes
due to unexpected reentrancy via nested event loops.
This patch adds a simple backend for HTTP and HTTPS requests that simply
funnels them through QNetworkAccessManager.
2022-12-25 07:58:58 -07:00
Andreas Kling
69d264828f
Ladybird: Add a "Reload" action to reload the current URL
2022-12-25 07:58:58 -07:00
Matthew Costa
7bf3010185
Ladybird: Trigger browser to quit when the main window is closed
...
This patch adds an event handler to the main window which allows it to
respond to a user closing the window. This event is then passed on to
the LibCore event loop, which allows the application quit itself.
Previously the application would hang, only running in the background,
until killed by an external force.
2022-12-25 07:58:58 -07:00
Keir Davis
95e3e06a1e
Ladybird: Add Favicon to the window
2022-12-25 07:58:58 -07:00
Matthew Costa
47d7f1efec
Ladybird: Apply inverse image scaling to ensure WebView renders at 1:1
...
On high-dpi systems QT will automatically scale up painting operations.
This results in an ugly blurry browser window surrounded by a nicely
scaled window frame. This patch applies an inverse scale to the WebView
widget, ensuring the painting and mouse events are lined up and draw
with a 1:1 pixel ratio with respect to the display's device pixels.
2022-12-25 07:58:58 -07:00
Timothy Flynn
9edd334beb
Ladybird/Meta: Add libgl1-mesa-dev to build dependencies
...
Without this package, CMake fails with the error:
Could NOT find OpenGL (missing: OPENGL_INCLUDE_DIR)
This package is listed in Qt's requirements here:
https://doc.qt.io/qt-6/linux.html#requirements-for-development-host
2022-12-25 07:58:58 -07:00
Andreas Kling
874e73e0c9
Ladybird/WebView: Apply viewport scroll offset to mouse event coordinate
2022-12-25 07:58:58 -07:00
Andreas Kling
96170a4f24
Ladybird/Meta: QT => Qt in the README :^)
2022-12-25 07:58:58 -07:00
Andrew Kaster
74fda4aff5
Ladybird/Meta: Convert to CMake build
2022-12-25 07:58:58 -07:00
Andreas Kling
da19b78dea
Ladybird: Don't set a fixed height on the location edit
2022-12-25 07:58:58 -07:00
Andreas Kling
f5d033b8ba
Ladybird: Show the web page title in the window titlebar :^)
2022-12-25 07:58:58 -07:00
Andreas Kling
8b7000e151
Ladybird: Add a location bar and allow navigating to new pages :^)
2022-12-25 07:58:58 -07:00
Andreas Kling
88d256c109
Ladybird: Show hovered link URLs in the status bar :^)
2022-12-25 07:58:58 -07:00
Andreas Kling
9b8fe16e3d
Ladybird: Plumb Qt mouse events into LibWeb
2022-12-25 07:58:58 -07:00
Andreas Kling
f16ba7945a
Ladybird: Make HTTPS loads default to port 443 instead of 80 :^)
2022-12-25 07:58:58 -07:00
Andreas Kling
80526625e8
Ladybird: Basic scrolling support
2022-12-25 07:58:58 -07:00
Andreas Kling
1eb653115b
Ladybird: Initial import :^)
2022-12-25 07:58:58 -07:00