Commit graph

4592 commits

Author SHA1 Message Date
Niels De Graef
be3ed978e2 Draft: Port to GTK4 2025-12-15 09:40:38 +01:00
Niels De Graef
0dad64a81d Port plugins from libpeas-1 to libpeas-2
The newer version of libpeas was released a couple of years ago already,
and at this point should probably be consdered the only maintained
version.

The changes are pretty minimal, and most should be pretty obvious from
the libpeas migration guide. The only annoying thing is that we can't
use `Peas.Engine.create_extension()` directly, since it's not exposed to
language bindings (even to Vala, which supports varargs, but alas).

Link: https://gnome.pages.gitlab.gnome.org/libpeas/libpeas-2/migrating-1to2.html

Fixes: https://gitlab.gnome.org/GNOME/geary/-/issues/1690
2025-12-12 01:02:12 +01:00
Niels De Graef
2823c9da27 Point old wiki links to the new Geary Gitlab wiki 2025-12-11 23:20:40 +01:00
Niels De Graef
81859bd3c3 Adapt vala-unit and tests to GLib 2.70 and later
`GLib.TestSuite` is a special type of object, as it doesn't actually
have an associated copy function or a reference/unreference function.
In practice, that actually means there's no way to actually have 2
strong references to such an object, or to copy it somehow. Due to the
way GObject properties in Vala work, that means you can't really use
them either.

Ever since vala commit 5f0a146f65, this got reflected properly in the
internally maintained GLib VAPI (as people were experiencing double
frees otherwise), but it was added only conditionally for GLib 2.70 or
later. In practice, that means you only get vala compiler issues if you
(impliclty) set `--target-glib=2.70` (or a later version).

To fix this for vala-unit and our own Geary tests, this commit changes
the `ValaUnit.TestCase` class to only allow "stealing" the strong
reference to the `GLib.TestSuite`, rather than somehowing allowing
people to hold a weak reference, and by also making it a protected field
rather than a property.

Since this changes the API of ValaUnit, we also bump the version. In
general though, I hope people aren't using ValaUnit externally, since
these types of API/ABI breaks can happen with Vala libraries.

Link: 5f0a146f65
2025-12-07 11:37:22 +01:00
Niels De Graef
6ce2373a75 Create a config.vapi for config.h
Currently, a lot of our build variables that are defined at
configuration time, are spread out across the code base, often declared
as `extern` which can break when moving around sections of the code
across files.

This commit introduces a "Config" namespace which basically maps to the
definitions in `config.h`, but allows us to properly access them too
from the Vala source code.

By doing so, it helps us to more explicitly see where we rely on a
build variable from this file (which should be obvious from the `Config'
namespace).

To make it ourselves a bit easier in Meson too, we can declare an
internal dependency, which helps ensure that we pull in the dependency
where needed.
2025-12-07 01:32:32 +01:00
Niels De Graef
d44e934ccf webview: Don't register the same resources twice 2025-11-24 12:29:38 +01:00
Cédric Bellegarde
636459b97e client: conversation-list: Show recipients in Sent folder
Fix #669
2025-08-27 08:06:56 +00:00
Cédric Bellegarde
42c5b6248a engine: Detect mime encoding constraint from server EHLO
Fix #1416
2025-08-27 08:03:38 +00:00
Serhii Tereshchenko
efc10cd504 feat: Use DarkReader for dark mode emails 2025-07-21 08:39:49 +00:00
Cédric Bellegarde
d6793342c1 client: Go to next pane once something has been selected
Fix #1601
2025-06-09 19:36:29 +00:00
Jeremy Bicha
dcb1ee40b3 Support GNOME 42 dark theme preference 2025-06-09 21:12:02 +02:00
Serhii Tereshchenko
dbfb7f40da client: Support Dark Mode
Refs #714

Co-authored-by: Niels De Graef <nielsdegraef@gmail.com>
2025-06-09 16:25:30 +03:00
mooff
2ef32d2d2d Implement dark mode using color-scheme CSS property 2025-05-31 13:21:09 +03:00
Serhii Tereshchenko
851f188a06 client: Fix invalid conversion from points to pixels
CSS and WebKit expects font size in pixels, but not "actual device pixels".

This fixes incorrect font size when using font-scaling with WebKitGTK >= 2.48.
Under older WebKitGTK versions result will be the same.

Refs https://github.com/WebKit/WebKit/pull/40412#issuecomment-2690897270
2025-04-29 21:21:15 +00:00
Serhii Tereshchenko
9914508e21 client: Fix incorrect height being set for a WebView, when using font scaling
Fixes #1646
2025-04-04 00:17:15 +00:00
Balló György
e91606b25b Set prgname to application ID
Using the application ID ensures that Wayland compositors could match the
window with the application and show the appropriate icon for them.
2024-09-03 16:50:08 +00:00
Tux
1fb4d3b3d6 Fix crash with drag-and-drop in conversations view 2024-07-20 12:09:34 +08:00
Sabri Ünal
6bc111f7cc Update file util-date.vala
- Add `//xgettext: no-c-format` comment to prevent dates marked as c-format
- Use `https://docs.gtk.org/glib/method.DateTime.format.html`
instead of unreachable `http://developer.gnome.org/glib/2.32/glib-GDateTime.html#g-date-time-format`.
2024-06-25 13:53:49 +03:00
Cédric Bellegarde
22b3eeb9c9 client: Simpler notification messages
Fix #1015
2024-02-21 14:32:12 +00:00
Cédric Bellegarde
fa41e36efa client: Navigate forward when opening a message
Fix #1558
2024-02-21 13:39:59 +00:00
Cédric Bellegarde
22d60d777b client: Remove map handler on first map
40a2c1aec4 introduced a regression on composer detach.

On detach, widget is mapped again and composer content is cleared. Be sure
to remove handler on first map.
2024-02-21 13:12:37 +00:00
Niels De Graef
6ae4cd620f composer-widget: Ellipsize long attachment names
If an attachment name is way too long, the attachment name label forces
the composer widget to become too wide which breaks on smaller screens.

To fix this, ellipsize the label if needed. Since the user has probably
just chosen the attachment, they probably have an idea which attachment
it is anyway, so we can do this instead of wrapping. Since the file
extension can make a big difference, we ellipsize in the middle.

When a label is ellipsized, we also add the label as a tooltip in case a
user wants to double check the attachment name though.

Fixes: https://gitlab.gnome.org/GNOME/geary/-/issues/1577
2024-02-17 15:51:53 +00:00
Cédric Bellegarde
920343e575 engine: Do not stop delivering messages on error
- We are already showing an infobar for CONNECTION_FAILED with a 'Retry'
  button that will requeue all outbox messages
- For UNRECOVERABLE_ERROR, just ignore them until next engine restart

Fix #1258 #1482
2024-02-14 11:59:17 +00:00
Cédric Bellegarde
587181a69d client: Workaround a secret issue with Flatpak 2024-02-02 11:08:42 +00:00
Cédric Bellegarde
9e546397a3 engine: Reply all needs to reply to sender
If a mail is sent to a mailing list with Reply-To set, we need to reply
to sender too!
2024-02-02 10:57:16 +00:00
Cédric Bellegarde
b7503f05ce engine: If reply-to set, we have to honor it
Fix #1105
2024-02-02 10:57:16 +00:00
Cédric Bellegarde
418de07582 engine: When opening a folder, sanitize remote unseen.
Messages may have been marked as read while waiting in
open_remote_session_locked().

Unsure we handle the diff when remote session opened.

Fix #1023
Fix #364
2024-02-02 10:53:49 +00:00
Cédric Bellegarde
8164b5034e build: Add delayed_replay_queue option
When folder session is claimed, that can lock for some ms.
It can be tricky to debug issues happening during this small random delay.
Use this build option to force the delay.
2024-02-02 10:53:49 +00:00
J. Alexander Alzate Olaya
daaa10a96a accounts_editor_edit_pane: Add default tooltip to undo button 2024-01-12 20:22:58 +01:00
Cédric Bellegarde
f39839a926 client: Update actions on selection if folded 2023-12-20 14:25:45 +00:00
Cédric Bellegarde
d7ec8bafee client: Application.MainWindow: Always log error in the background
convo.get_count() will not be zero when an email is loaded while being
removed.
2023-12-20 11:21:29 +00:00
Cédric Bellegarde
cb60bdd3ea client: Application.Controller: Disable flood prevention after a small timeout
Marking a message with same command is legit in those scenarios:
- Previous mark command failed, we do not want Geary to be unable to
  mark message again
- Multiple clients connected to same IMAP box:
    - Geary marked message as read
    - Another client marked it as unread
    - Geary is unable to mark it as read again
2023-12-20 11:21:29 +00:00
Cédric Bellegarde
fcac4c9e29 engine: Filter duplicated mailboxes on LIST
When using virtual namespaces in Dovecot, a LIST command will return
mulitple entries for virtual folder. Always use flags from last entry.

```
a005 LIST "" "*"
* LIST (\HasChildren) "." virtual
* LIST (\HasNoChildren \UnMarked) "." Templates
* LIST (\HasNoChildren \UnMarked \Trash) "." Trash
* LIST (\HasNoChildren \UnMarked \Junk) "." Junk
* LIST (\HasNoChildren \UnMarked \Drafts) "." Drafts
* LIST (\HasNoChildren \UnMarked) "." Archive
* LIST (\HasNoChildren \UnMarked \Sent) "." Sent
* LIST (\HasNoChildren \Flagged) "." virtual.Favoris
* LIST (\Noselect \HasChildren) "." virtual
* LIST (\HasNoChildren \Flagged) "." virtual.Favoris
* LIST (\HasNoChildren) "." INBOX
```

Fix errors like: `Unable to get STATUS of virtual: a008 NO Mailbox doesn't exist: virtual`
2023-11-18 14:59:49 +01:00
Cédric Bellegarde
5dde584f1f engine: Ensure we try to connect again on connection error
Fix #1552
2023-11-18 14:53:34 +01:00
Cédric Bellegarde
c3629be043 engine: Set database temp store
Fix #1017
2023-11-18 14:50:58 +01:00
Cédric Bellegarde
4c442f6253 client: Ensure conversation is loaded before replying 2023-11-18 13:14:53 +00:00
Cédric Bellegarde
a5e4764de5 client: Remove mostly unused StatusBar widget
- Message are now shown in toasts
- It's only used to hold a Spinner, moved in HeaderBar
2023-11-18 12:02:15 +00:00
Cédric Bellegarde
42cb76282e client: Ensure accounts dialog fits on small display devices
- Replace ellipsizing by wrapping
- Switch to vertical boxing if not enough space
- Fix welcome dialog
2023-10-14 11:41:18 +00:00
Cédric Bellegarde
88a31454d8 client: Reset last selected folder when leaving search
Fix #1063
2023-10-13 20:56:21 +00:00
Cédric Bellegarde
4c265cc9d6 client: components: Add a warning about enabling remote images
Fix #1550
2023-10-09 16:01:50 +02:00
Cédric Bellegarde
423cf1ee13 client: conversation-viewer: Update warning string about remote images
Fix #1425
2023-10-09 15:56:34 +02:00
Cédric Bellegarde
2a85a24605 engine: Fix fill_outbox_queue() prototype
cancellable can be null.
2023-10-02 18:37:43 +02:00
Julian Stecklina
8b0bda7b00 engine: Don't use domain for EHLO if it's not FQDN
This works around the combination of poorly configured system and an
SMTP server that really wants a FQDN and otherwise reject the EHLO
command.
2023-09-17 11:23:28 +00:00
Cédric Bellegarde
4359918825 client: More tweaks for lower desktop resolutions 2023-09-11 17:36:27 +02:00
Cédric Bellegarde
aefd8a4327 engine: Mark operation as completed if folder already empty
Fix #1240
2023-08-30 07:29:03 +02:00
Cédric Bellegarde
0265786ab0 engine: Do not stop unread calculation if no id provided
Fix #929
2023-08-30 07:29:03 +02:00
Cédric Bellegarde
d054e19cff client: higher infobar priority for special folders
Fix #1349
2023-08-29 23:04:24 +00:00
Cédric Bellegarde
46ec026404 client: move ComponentsInAppNotification as a toast
Fix #1207
2023-08-25 08:17:33 +02:00
Cédric Bellegarde
83bd8e0353 client: More tweaks for lower desktop resolutions 2023-08-25 08:12:26 +02:00
Cédric Bellegarde
41874dc29a client: ConversationList.Row: Rework widget internals
- Remove hover buttons
 - Move flagged icon to the right

Fix #1516
2023-08-24 06:45:50 +00:00