Commit graph

27 commits

Author SHA1 Message Date
Andreas Kling
16990fece3 GScrollBar: Improve appearance for curiously-shaped scrollbars. 2019-04-11 13:16:43 +02:00
Andreas Kling
b8062f69d8 LibCore: Add CEvent and make LibGUI/GEvent inherit from it. 2019-04-10 16:56:55 +02:00
Andreas Kling
b8f150457e LibGUI: Repaint GScrollBar without hover highlight immediately on leave. 2019-04-10 01:50:10 +02:00
Andreas Kling
6306cf5c27 GScrollBar: Add the same hover highlight effect as GButton. 2019-04-06 13:55:56 +02:00
Andreas Kling
c02c9880b6 AK: Add Eternal<T> and use it in various places.
This is useful for static locals that never need to be destroyed:

Thing& Thing::the()
{
    static Eternal<Thing> the;
    return the;
}

The object will be allocated in data segment memory and will never have
its destructor invoked.
2019-04-03 16:52:25 +02:00
Andreas Kling
f249c40aaa Rename Painter::set_clip_rect() to add_clip_rect().
It was confusing to see multiple calls to set_foo() in a row. Since this is
an intersecting operation, let's call it add_clip_rect() instead.
2019-03-29 15:01:54 +01:00
Andreas Kling
c77d369b75 GScrollBar: Make the scrubber size proportional to the scrollable range. 2019-03-29 02:51:19 +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
670e376e27 Tweak the look of various UI surfaces and buttons. 2019-03-27 20:48:23 +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
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
fd428d6ed3 SharedGraphics: Make Painter clipping work with translated clip origin. 2019-02-28 18:57:36 +01:00
Andreas Kling
15fb917f28 Convert more RetainPtr use to Retained. 2019-02-25 16:04:08 +01:00
Andreas Kling
d353c7c3d6 LibGUI: Support different button styles.
I want to try an MS Office 97 "CoolBar" inspired look for my toolbars.
This is only the painting support, we still need hover events to implement
the actual effect.
2019-02-20 09:22:38 +01:00
Andreas Kling
8321908abe LibGUI: Tweak the scrollbar and button styles a bit. 2019-02-17 12:08:28 +01:00
Andreas Kling
10d6f9ce31 SharedGraphics: Removed some unused stuff from Font. 2019-02-17 00:36:55 +01:00
Andreas Kling
d333013a54 LibGUI: Support horizontal GScrollBars as well. 2019-02-10 12:27:21 +01:00
Andreas Kling
8313ce57dc LibGUI: Improve GScrollBar button look a bit.
The arrows look better when they're sharp. :^)
2019-02-10 11:57:19 +01:00
Andreas Kling
29f2a22d34 LibGUI: Minor cleanup in GScrollBar. 2019-02-10 08:23:03 +01:00
Andreas Kling
f7831f8c76 LibGUI: Draw GScrollBar buttons with a disabled look when appropriate. 2019-02-10 07:37:02 +01:00
Andreas Kling
e354c08c98 LibGUI: Share code for widget rendering styles in a GStyle class.
Since GScrollBar wants its internal buttons to look like GButtons,
let's share the painting code between them.
2019-02-10 07:11:01 +01:00
Andreas Kling
9ea2131adf LibGUI: Support dragging the GScrollBar scrubber.
This was pleasantly easy to implement with the global mouse tracking. :^)
2019-02-10 06:51:01 +01:00
Andreas Kling
464873f8b5 LibGUI: Draw some cute arrows on the GScrollBar buttons. 2019-02-10 06:10:27 +01:00
Andreas Kling
6a3ff7efc5 GScrollBar: Start looking a bit more like a proper scrollbar.
And hook up FileManager's DirectoryView with its scrollbar so it actually
causes the directory view to shift up and down. Very cool. :^)
2019-02-09 11:29:59 +01:00
Andreas Kling
1f355f2a79 LibGUI: Start working on a GScrollBar.
This widget is far from finished, but it's off to a good start.
Also added a GResizeEvent and GWidget::resize_event() so that widgets
can react to being resized.
2019-02-09 11:19:38 +01:00