This restores normal key handling MainWindow:key_press_event when a
keyboard modifier (Ctrl, Shift, etc) is down, keeping the ordering hack
only for plain key presses, so that we can handle Ctrl+V before
WebKitGTK does, and hence letting us paste plain text default when rich
text is not enabled.
Fixes Bug 730495.
* ui/composer-widget.ui: Make the info label esliipsisable, but give it a
reasonable minimum size.
* src/client/composer/composer-widget.vala (ComposerWidget): Set the info
label's tooltip with the text so it can still be read when ellipsed.
* src/client/composer/composer-widget.vala (Composer): Replace use of
inappropriate public properties and obtuse property bindings with a
subject_changed signal and private properties that update the info
label in their setter, so it's obvious how the whole thing works. Move
code for managing a detached compoer's window title to the
ComposerWindow class.
Fixes Bug 793710.
* src/client/composer/composer-headerbar.vala (ComposerHeaderbar): Ensure
we actually get notified when the user changes their decoration prefs
and update detach button location correctly.
* ui/composer-headerbar.ui: Make start detach button's image visible by
default.
It looks like Gtk.Spinner triggers repaints when running, even when the
widget is not visible. This ensures the conversation is stopped when not
visible.
Fix for Bug 783025.
* src/client/conversation-viewer/conversation-viewer.vala
(ConversationViewer): Start the conversation spinner when showing it,
stop the conversation spinner when it is hidden.
Using show_all is a pita, since it causes a bunch of bugs whenever we
need to conditionally show/hide widgets. This removes all uses on the
main window in favour of either just show() or present(), and ensures
that its widgets that are shown by default, are shown by default.
This attempts to solve bug
[#714921](https://bugzilla.gnome.org/show_bug.cgi?id=714921).
They are available as two buttons on the format bar, next to font
options. The icons I used are taken from a free icons site just for demo
purposes and should be replaced by new icons. Also I did not include
hotkeys mainly because I could not come up with a good one, also they
are pretty uncommon I think.
Also added new icons to icons/CMakeLists.txt
Some remarks:
* Note that Meson adds a hard dependency on Python 3.
* All dependencies and defines are now listed together.
* Some build files were put in their respective subdirectories, e.g. the Geary
engine library will be built from the Meson file in `src/engine`.
* `--fatal-warnings` is no longer an explicit flag, as Meson provides
`-Dwerror=true` for this.
* An explicit resource file needs to be used. The issue to support this from
Meson itself can be found at https://github.com/mesonbuild/meson/issues/706 .
* The `gnome.yelp()` function parses a LINGUAS file so we no longer need to keep
track of all languages in our build system.
* There are no Debian scripts defined in the meson.build files to keep them
clean, but they can be kept as separate scripts in `build-aux`.
* Left out the `dist` target as there is now `ninja dist`
* `geary-docs` is disabled by default, as valadoc-0.38.3 returns errors.
https://bugzilla.gnome.org/show_bug.cgi?id=777044
This adds a dependcy on libunwind for generating the back trace.
* src/CMakeLists.txt: Require libunwind-generic package and libunwind
VAPI. Update docs and debian/control with new dependencies.
* src/engine/api/geary-problem-report.vala (ProblemReport): Generate a
stack trace in the default constructor if an error is specified.
* src/client/components/main-window-info-bar.vala
(MainWindowInfoBar::format_details): Include stack trafe from problem
report in output if present.
* ui/main-window-info-bar.ui: Add a ScrolledWindow around the TextView
since the details could now be quite large.
* bindings/vapi/libunwind.vapi: Add bindings for libunwind courtesy
Guillaume Poirier-Morency, add Error enum.
* src/client/components/client-web-view.vala (ClientWebView): Add
is_content_loaded property and content_loaded signal, update and fire
when getting a contentLoaded message from the WebProcess.
* ui/client-web-view.js: Fire the contentLoaded message when loading is
complete. Add ClientPageStateTest test case to ensure it is working
fine.
* test/client/components/client-web-view-test-case.vala
(ClientWebViewTestCase::load_body_fixture): Use is_content_loaded
rather than is_loading as the test for loading having finished, since
we're actually interested in when the JS has finished loaded, not the
resources.
Fixes a failing unit test with WebKitGTK 2.18.
* ui/composer-web-view.js (EditContext::init): Check for and strip both "
and ' from start and end of font-family string.
* src/engine/api/geary-problem-report.vala: New problem enum,
ProblemReport class and AccountProblemReport and ServiceProblemReport
subclasses that encapsulate error, account and service information when
reporting problems.
* src/engine/api/geary-account.vala (Account): Remove old Problem enum,
make report_problem signal and related notify methods accept a
ProblemReport instance instead. Reorganise protected methods a bit and
update subclasses and signal handlers.
* src/client/components/main-window-info-bar.vala (MainWindowInfoBar):
Substantially rework to handle ProblemReport instances via
for_problem() constructor.
* src/engine/imap-db/outbox/smtp-outbox-folder.vala (SmtpOutboxFolder):
Substantially rework error handling yet again to get some better
ProblemReport instances being generated.
* src/client/components/main-window-info-bar.vala (MainWindowInfoBar):
New class and UI file for displaying an info bar in the main window, as
well as providing a way to show technical informartion if needed.
* src/client/components/main-window.vala (MainWindow): Add a Gtk.Frame
and container to hold inforbar instances. Show it when showing an
infobar, and hide it when there are none. Add show_infobar() method to
provide a cromulent way of adding info bars.
* src/client/application/geary-controller.vala (BaseObject): Rather than
bailing out on an account when an error occurs, display an info bar
instead.
* ui/geary.css: Style the info bar frame to only show a border between
main content and the info bars.
* Ported Gtk.Action to GLib.Action in the GearyController.
* Removed Gtk.AccelGroups (handled through Gtk.Application now).
* Got rid of Gtk.UiManager (now all is done through Gtk.Builder).
* Throw away workaround for conflicting Gtk.Actions in ComposerContainer.
* Aggregate zoom in/out/normal into one parameterized zoom action.
Signed-off-by: Niels De Graef <nielsdegraef@gmail.com>
* Ported Gtk.Action to GLib.Action in the GearyController.
* Removed Gtk.AccelGroups (handled through Gtk.Application now).
* Got rid of Gtk.UiManager (now all is done through Gtk.Builder).
* Throw away workaround for conflicting Gtk.Actions in ComposerContainer.
* Aggregate zoom in/out/normal into one parameterized zoom action.
Signed-off-by: Niels De Graef <nielsdegraef@gmail.com>
* Ported Gtk.Action to GLib.Action in the GearyController.
* Removed Gtk.AccelGroups (handled through Gtk.Application now).
* Got rid of Gtk.UiManager (now all is done through Gtk.Builder).
* Throw away workaround for conflicting Gtk.Actions in ComposerContainer.
* Aggregate zoom in/out/normal into one parameterized zoom action.
Signed-off-by: Niels De Graef <nielsdegraef@gmail.com>