112 Commits

Author SHA1 Message Date
Sebastian Wick
11d05c4aea Adjust to MetaCursor changes 2025-02-18 22:20:41 +01:00
Julian Sparber
ef4af961bf messageList: Floor preferred height of LabelExpanderLayout
This fixes the flickering when expanding/collapsing an expandable
message inside a NotificationMessageGroup.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
b4113b1ee2 messageList: Highlight expanded group
The new design requires that other messages and groups are faded when the user
has a group expanded. This introduces a new GLSL shader to provide the
desired effect. The new shader is used for the already existing scroll
fade and the previous one is removed. The two fades need to work together to
ensure that resulting fade looks good.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
a795dfb2ff messageList: Center expanded notification group in view
Ensure that when the user expends a group, it is scrolled to and centered
in the in the `MessageListView`.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
47de83a922 messageList: Make notification groups expandable/collapsible
This implements the new expand/collapse feature for notification groups
according to the new notification designs [1].

[1] 9e2bed6f37/notifications-calendar/notifications-grouping.png

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
dae4179b3d messageList: Add grouped notifications to MessageView
This makes use of the NotificationMessageGroup widget introduced in the
previous commit to add notifications to the MessageView.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
219cd88c82 messageList: Add notification group
This add a widget for the new notification grouping
according to the new designs [1], but the expand behavior will be added
in a future commit.

[1] 9e2bed6f37/notifications-calendar/notifications-grouping.png

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
0ac129bbd6 messageList: Prepare MessageView for notification groups
We need to track message order separate from the widget children order,
because of how notification groups will add a cover over other messages
when a notification group is expanded that will prevent interaction with
any message other then the expanded notification group.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
95c21bbb19 messageList: Allow disabling automatic resizing of ScaleLayout
For notification grouping we don't always want to resize the message
container when adding or removing a message. This adds the option so it
can be disabled when not wanted.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
b4c74ee168 messageList: Add back media source to MessageView
Adds back the media/mpris message source to the MessageView, it was
previously dropped because of the widget restructure needed for message
grouping.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
996480908d messageList: Cleanup MessageView before adding new features
This removes some unneeded children, cleans up the API of the
MessageView and changes legacy coding style.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
6e86110dfd messageList: Rename MessageSection to MessageView
For message grouping by source we need more control over the list of
messages to reflect this change rename the MessageSection to
MessageView. Message from different sources will be added to the
MessageView directly in a future commit.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
9b13bf552a messageList: Drop all subclasses of MessageListSection
For message/notification grouping by source we need more control over
each single message therefore in a future commit the
MessageListSection will contain all messages directly instead of having
a separate section for different source (notifications and media).
The lost NotificationSection and MediaSection will be readded in a
future commit as well.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3012>
2025-02-11 11:30:29 +00:00
Julian Sparber
03e5d4bdd8 messageList: Drop unused Message._onDestroy()
This method isn't used and users (e.g extensions) of `Message` can connect
to the destroy signal if they need it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
88f551d0a8 messageList: Reduce flexibility of section visibility
Section visibility has become less complex when moving events
out of the message list. We no longer need different behavior
in different sections, so we can instead control the visibility
of the entire list in a single place.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
0c6f896d4b mpris: Move widgets to messageList.js
Widgets for other type of messages (notifications) are already in
`messageList.js` therefore move widgets for mpris also there.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
45d7b9673a messageList: Fix warning when user activates a message while removing
The `Notification` object is destroyed before the `Message` widget so
during the removal animation the user still could click on the `Message`
and activate the notification. This ensures we don't warn about it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
bf76553287 messageList: Use default signal handler for closing notifications
And change the `close` signal on `Message` to run the default handler
last, which allows other signal handers to stop the signal emission
chain.

This change shouldn't have much effect on existing code but will be
needed for by-source notification grouping.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
6fa76cd8f4 messageList: Use notification-removed signal in MessageListSection
Since we have now the `notification-removed` signal on
`MessageTray.Source` we can use it instead of connecting to the
`destroy()` signal for each single notification in the
`MessageListSection`.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Julian Sparber
64aadeece3 messages: Move message widgets from calendar.js to messageList.js
The widgets `NotificationMessage` and `NotificationSection` in `calendar.js`
aren't used only by the calendar.

Move the two widget to messageList.js since once we add by-source grouping for
messages (which will happen in a future commit) we need a much tighter
coupling between them and the rest of the MessageList. In future the
`NotificationSection` will need to be removed to make expanding of
groups work.

This also removes a circular import of files: `calender.js` imports
`messageTray.js` and it imports `calender.js`.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3429>
2025-02-02 17:40:14 +00:00
Florian Müllner
b75b4abaf0 js: Set BoxLayout orientation
Use new `orientation` property instead of `vertical`.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3614>
2025-01-27 13:55:39 +01:00
Bilal Elmoussaoui
aa0f2c4915 Use NULL for nick/blurb in GObject params
As they are only used by gstreamer for gst-inspect & other tools.
Projects like Mutter/gtk have completely dropped them as well, so follow
their path

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3505>
2024-10-16 10:19:41 +00:00
Sam Hewitt
ff4b9fdb08 style: Use unlinked rounded buttons for notifications
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3383>
2024-08-02 15:16:46 +00:00
Sam Spilsbury
3d9c40783f util: Implement fixMarkup in util as opposed to messageList
We want to be able to import it in the markup unit test without
bringing in a UI dependency.

https://bugzilla.gnome.org/show_bug.cgi?id=783738

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3164>
2024-05-21 13:42:28 +00:00
Florian Müllner
a94b80b2d4 messageList: Only apply special styling to symbolic icons
The styling introduced in commit 8fed0b83d was only intended
for symbolics, it looks weird when applied to full-color icons.

So instead of using the GIcon type, apply the special styling
based on the new StIcon:is-symbolic property.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7620
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3296>
2024-05-09 17:47:32 +00:00
Florian Müllner
df50c2dfc6 cleanup: Replace deprecated String.prototype.substr()
The method is documented as deprecated:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr

Switch to the non-deprecated substring() method.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3234>
2024-04-19 17:38:37 +00:00
Aleksandr Mezin
e1db7e368f messageList: Fix TypeError in Message.useBodyMarkup setter
Setting `useBodyMarkup` to `true` fails with:

    JS ERROR: TypeError: this.setBody is not a function
    set useBodyMarkup@resource:///org/gnome/shell/ui/messageList.js:585:14

Fixes: f0e863f529 "messageList: Use GObject properties for Message"
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3232>
2024-03-08 19:36:50 +00:00
Julian Sparber
262fb191b1 notification: Allow expanding notification in calendar drawer
This adds a button to expand a notification. This makes most of
the body readable (limited to 6 lines) and the action buttons available
to the user.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3173>
2024-03-03 01:33:16 +00:00
Julian Sparber
dc4e2e8114 messageList: Always show close button when message is closable
Once we add a expand button, which we want to show always, the close
button would look odd if it hides automatically.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3173>
2024-03-03 01:33:16 +00:00
Julian Sparber
274d8be7b9 messageList: Use single actor to display message body
Using two actor to display collapsed and expanded body creates a small
flicker when switching between the actors, since we can resize the actor
we can just use one actor and resize it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3173>
2024-03-03 01:33:16 +00:00
Julian Sparber
f0e863f529 messageList: Use GObject properties for Message
This will allow us to use property bindings.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3173>
2024-03-03 01:33:16 +00:00
Julian Sparber
ffaec5615a messageList: Directly take an GioIcon as image for a message
There is pretty much no value gained by allowing to use any actor to display
an image, so just don't allow it since it simplifies the code and CSS.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3173>
2024-03-03 01:33:16 +00:00
Julian Sparber
d44adf3b78 notifications: Add buttons to Calendar.NotificationMessage via actions
Since we also want to show the buttons in the calendar move the
code to add buttons/actions from `MessageTray.NotificationBanner` to
`Calendar.NotificationMessage`.

As nothing uses custom buttons that aren't backed by actions anymore,
remove that bit of the public API.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7099
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3173>
2024-03-03 01:33:16 +00:00
Julian Sparber
f8567bb1a7 messageList: Drop methods to customize the body of a message
Since only the telepathy client needed a special actor as expanded body
we can now drop the methods for it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3173>
2024-03-03 01:33:16 +00:00
Julian Sparber
8fdea10e33 notifications: Add header like in the new designs
See:
9e2bed6f37/notifications-calendar/notifications-grouping.png

This also increases the size of the icon to 48px.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6743
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
ff76584937 notifications: Introduce MessageList.Source object
This object contains only the `title` and `icon` of a
`MessageTray.Source` which allows using it for sources
that aren't notification sources like mpris.

The old `MessageTray.Source` isn't renamed to something
less generic to not break API. Once we have a good reason
we should rename it to something more specific.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
89c602cb62 messageList: Remove secondary actor API from Message
The secondary actor isn't used for anything anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Julian Sparber
f8fce24d5c messageList: Add property to display the timestamp of a message
This also adds the needed actor to display the timestamp.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3103>
2024-01-30 17:05:23 +00:00
Sam Hewitt
49c0b849c4 style: Improve text scaling support
- new drawing function to convert px to em, for select instances
- updated fontsize function to convert fonts in pt to em
- replace instances of discrete sizes with defined values
- fix instances where assets or icons did not scale along with text
- rework panel buttons to accommodate the scaling padding and icons
- new 'scalable' definitions for elements that follow text scaling

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3033>
2023-12-05 12:14:53 +00:00
Zander Brown
596efc3fa9 js: Adapt for ::child-{added,removed}
These were previously known as ::actor-{added,removed}

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3014>
2023-11-14 11:09:02 +00:00
Zander Brown
350cd296fa js: Stop using ClutterContainer API
These have been long deprecated over in clutter, and (via several
vtables) simply forward the call to the equivalent ClutterActor methods

Save ourselves the hassle and just use ClutterActor methods directly

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3010>
2023-11-10 20:19:13 +00:00
Alessandro Bono
be49c8efc2 messageList: Use duration 0 when not animating
Instead of using a special branch for the not animate case, just use
the same path with duration 0.

Since commit ee09c5c85312f571e14abe69bb6674a361c16d65 we are sure that
duration 0 is always preserved.

In the not animate case, we now call this._actionBin.hide(). This was not
happening before.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2987>
2023-10-21 15:02:55 +00:00
Chris Heywood
f119e5282b messageList: Allow dismissal via backspace
Currently only the delete key can be used to dismiss notifications.
Some laptops don't have delete keys, resulting in needing to hit a
modifier to trigger delete.

Plus, on those keyboards that do have delete keys they're often a
little harder to strike than backspace.

https://gitlab.gnome.org/gnome/gnome-shell/-/issues/5789

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2435>
2023-08-16 14:04:47 +02:00
Florian Müllner
a42f7c2384 cleanup: Use type-safe comparisons
We have been using type-safe comparisons in new code for quite a while
now, however old code has only been adapted slowly.

Change all the remaining bits to get rid of another legacy style
difference.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2866>
2023-08-09 15:10:38 +00:00
Florian Müllner
9a3913d4a0 cleanup: Use consistent 4-space indent
This is another bit where we've made good progress, and just need
a final push to complete the transition.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2866>
2023-08-09 15:10:37 +00:00
Florian Müllner
071f92cfb6 cleanup: Remove spaces in object literals
We only adopted this style relatively recently, so there's a bit
more to adjust. Still, it's manageable and another step towards
getting rid of the legacy style.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2866>
2023-08-09 15:10:37 +00:00
Florian Müllner
6a22af83dc cleanup: Always use single quotes
We have made good progress with transitioning to the new style,
to the point where we can complete it with a final push.

Start with changing the remaining places that still use double
quotes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2866>
2023-08-09 15:10:37 +00:00
Carlos Garnacho
8423ba44fe js: Mass move to Clutter.Event getter methods in Clutter.Actor vfuncs
These traditionally got the various ClutterEvent subtype structs as their
argument, so it was not allowed to use ClutterEvent generic getter methods
in these vfuncs. These methods used direct access to struct fields instead.

This got spoiled with the move to make ClutterEvent opaque types, since
these are no longer public structs so GNOME Shell most silently failed to
fetch the expected values from event fields. But since they are not
ClutterEvents either, the getters could not be used on them.

Mutter is changing so that these vmethods all contain an alias to the
one and only Clutter.Event type, thus lifting those barriers, and making
it possible to use the ClutterEvent methods in these vfuncs.

Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2950
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2872>
2023-08-09 13:46:08 +02:00
Evan Welsh
a751e213f6 js: Port to modules
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1499>
2023-08-06 13:02:49 +02:00
Evan Welsh
64aa871a8a js: Add JSDoc to exported functions and fix incorrect JSDoc formatting
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1499>
2023-08-05 22:16:23 +02:00