Commit Graph
236 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto 8f04f40272 views/month: Factor out row offsetting in a function
And use it in the pixel-based variant.
2023-08-13 18:37:12 -03:00
Georges Basile Stavracas Neto 12a9e8193f views/month: Rename a function
We'll introduce a variant of this function that operates directly
on row offsets, instead of pixel values.
2023-08-13 18:37:12 -03:00
Georges Basile Stavracas Neto da2b7328e0 views/month: Implement event updates
Just do a stupid remove + add, which is far from ideal but will
be enough for the time being.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 77f355ed53 month-cell: Small style improvements
As suggested by Allan.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 176f8f28a8 views/month: Show overflow popover when requested
Basically, all that we used to do, but written in a different
way for the new month view.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 15032b6d05 month-view-row: Add 'show-overflow' signal
It just proxies the day cell's signal.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto d5a36d4ad2 view: Operate on ranges
This is the data struct we should be using everywhere now.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 9b343db339 views/month: Improve date calculation for cell style
Use the center the view as the date with which the day cells
are styled. This should be enough to highlight the month with
most days visible onscreen.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto e7846a6b9c views/month-view: Change visuals of out-of-month day cells
This still looks like garbage becase of the rudimentary way we
compute the current date, but it's a start.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 7e26bd5649 views/dazzling: Make it *the* month view
And move the old one to the attic. I'll keep the files around for
a while.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 7f7f55826c month-view-row: Implement RTL support
This was remarkably easy.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 5bc8fffc71 views/dazzling: Add cached events to shuffled row
Cached events won't be readded by the backend, because they're
alread present in the view, so we have to manually add them to
the rows.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto ac3998f07d month-cell: Add padding beneath day number
We need to breathe!
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto ddfd3ae498 month-view-row: Slant edges of multiday events
When the start or end of the event block doesn't match the event's
range, add slanted edges.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 56d9040030 month-cell: Set sensitivitiness of the button 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto b9d4405e69 views/week-header: Check for NULL child
I'm not sure if this is actually correct, but I'm too tired to
think the week header through, so let's just be slightly more
protective for now.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto a743f6884e month-cell: Start insensitive 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 030f370015 month-cell: Don't change inscription visibility
Let's just change the text and preserve the visibility of the
inscription.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto c2b07a5e0a views/dazzling: Detect week changes, not months
The new month view operates on weeks
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto d2c606a221 views/dazzling: Actually use start date
Oopsie
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 83acb98f9e views/dazzling: Make debug prints more useful 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 66cb36e855 views/dazzling-month-view: Implement differential date change
Should make the Today button work properly now.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 1c307de688 views/dazzling: Remove unused field 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto f9f9ccbb8c month-view-row: Rewrite layout algorithm
Calculate event blocks upfront, in a way that is agnostic to
pixel sizes, and keep them alive as long the event is around.

Calculate which event blocks are visible at layout time, and
only set the child visibility of the event widgets, instead
of truly showing or hiding them. This makes size_allocate not
queue relayouts.

There are many opportunities for optimizations that we can
eventually land, but this seems to work decently so far.

RTL support is still missing.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto b775256ef8 views/month-cell: Use GtkInscription
It allows us to change text without causing a relayout.
This will be important later.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto a04b5da975 month-view-row: Remove unnecessary field 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 6382b1f383 month-view-row: Remove redundant check
All events of a row are, technically, in the same row!
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto cc51e88ed2 month-view-row: React to event visibility 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 3506100f5b views/dazzling-month-view: Show event popovers 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 3a36f75877 views/dazzling-month-view: Tentatively support wheel scroll
Add a dedicated discrete scroll event controller, and ensure
each event controller handles the right types of events.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 3f0b1e57de views/dazzling-month-view: Handle events
Most of the code is copied from GcalMonthView, so it sucks
slightly. But it seems to work reasonably well so far.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto f8f2c10a8e views/dazzling-month-view: Propagate context to rows 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto adaf735ada views/month-view-row: Remove unused variables 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto d62bd1ae77 views/dazzling-month-view: Sketch timeline subscription
Right now it does nothing beyond reporting a range, but eventually
we'll populate this code.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto f36fcbbbbd views/dazzling-month-view: Notify active-date changes 2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto 72d4f45cd1 views/dazzling-month-view: Initialize on current date
Calling gcal_view_set_date() ensures that all week rows have
their ranges setup. This will be useful later.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto a527bbe5dc views: Sketch out new month view
Nothing really works here, this is very WIP. It doesn't even show
events. Let's build from here.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto e47ee2dc17 views/week: Simplify variable with g_autoptr 2023-08-02 11:04:25 -03:00
Georges Basile Stavracas Neto 07dd7780ad view: Cosmetics 2023-08-02 11:04:12 -03:00
Christopher Davis 3ee8a3ae82 week-header: Ellipsize month 2023-06-17 20:18:07 +00:00
Christopher Davis 3f366ad19c week-header: Ellipsize "Other %d events" label
This label can be too wide for our view.
2023-06-17 20:18:07 +00:00
Felipe Kinoshita 72eb199f84 general: Stop using get_allocated_width/height
gtk_widget_get_allocated_width and gtk_widget_get_allocated_height are
deprecated, let's use the recommended functions.
2023-05-30 05:13:34 -03:00
Georges Basile Stavracas Neto b5c9d5b73f window: Use AdwToolbarView to look prettier
We're fashion now.
2023-05-23 17:01:54 -03:00
Georges Basile Stavracas Neto 501347f797 views/month: Cleanup math
The Month view is a complicated beast when it comes to allocating
events, but it's unnecessarily complicated since it tries to take
margins of events into accounts. With GTK4, that's not necessary
anymore, as GTK4 will independently and correctly apply margins
in widgets by itself, we don't have to do manually anymore.

Clean that up.
2023-03-16 12:30:15 +00:00
Georges Basile Stavracas Neto f751803e07 views/week-header: Use minute granurality
We end up losing minutes information when running through this code
path. Technically it's fine, because we copy the minutes from the
event, but it's better nonetheless to operate on the level of
granularity that Calendar supports.
2023-03-16 12:27:09 +00:00
Georges Basile Stavracas Neto 8b9af9241e views/week-header: Don't change all day state
I don't know what I had in mind when I wrote this, since 2017 self
did not bother adding a proper commit message, but 2023 me is pretty
convinced we never want to change the event length when dragging it
around.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/896
2023-03-16 12:27:09 +00:00
Georges Basile Stavracas Neto 0650c89ee2 views/week: Cleanup unused struct field
We don't use 'scroll_scale' anymore
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto e1616039d6 views/week: Special case discrete events
They behave slightly differently from smooth scroll events, and
they don't emit 'scroll-begin' nor 'scroll-end', so we have to
execute that the callbacks of these signals do inside the scroll
callback itself.
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto a55bf69dfb views/week: Don't swap callback arguments
No function changes
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto 189c809271 views/week: Store and restore zoom level
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/916
2023-03-16 12:26:28 +00:00