diff --git a/src/client/composer/composer-link-popover.vala b/src/client/composer/composer-link-popover.vala index 048c50f9..a4774a40 100644 --- a/src/client/composer/composer-link-popover.vala +++ b/src/client/composer/composer-link-popover.vala @@ -50,10 +50,7 @@ public class Composer.LinkPopover : Gtk.Popover { private Gtk.Button update; [GtkChild] - private Gtk.Button delete; - - [GtkChild] - private Gtk.Button open; + private Gtk.Button remove; private Geary.TimeoutManager validation_timeout; @@ -64,9 +61,6 @@ public class Composer.LinkPopover : Gtk.Popover { /** Emitted when the link URL was activated. */ public signal void link_activate(); - /** Emitted when the open button was activated. */ - public signal void link_open(); - /** Emitted when the delete button was activated. */ public signal void link_delete(); @@ -77,7 +71,7 @@ public class Composer.LinkPopover : Gtk.Popover { switch (type) { case Type.NEW_LINK: this.update.hide(); - this.delete.hide(); + this.remove.hide(); break; case Type.EXISTING_LINK: this.insert.hide(); @@ -135,10 +129,6 @@ public class Composer.LinkPopover : Gtk.Popover { } } - // Don't let the user open invalid and mailto links, it's not - // terribly useful - this.open.set_sensitive(is_nominal && !is_mailto); - Gtk.StyleContext style = this.url.get_style_context(); Gtk.EntryIconPosition pos = Gtk.EntryIconPosition.SECONDARY; if (!is_valid) { @@ -177,14 +167,8 @@ public class Composer.LinkPopover : Gtk.Popover { } [GtkCallback] - private void on_delete_clicked() { + private void on_remove_clicked() { link_delete(); popdown(); } - - [GtkCallback] - private void on_open_clicked() { - link_open(); - } - } diff --git a/src/client/composer/composer-widget.vala b/src/client/composer/composer-widget.vala index ac248221..ebc4a0d6 100644 --- a/src/client/composer/composer-widget.vala +++ b/src/client/composer/composer-widget.vala @@ -2640,6 +2640,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { popover.set_link_url(url); popover.closed.connect(() => { this.editor.free_selection(selection_id); + }); + popover.hide.connect(() => { Idle.add(() => { popover.destroy(); return Source.REMOVE; }); }); popover.link_activate.connect((link_uri) => { @@ -2648,9 +2650,6 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { popover.link_delete.connect(() => { this.editor.delete_link(selection_id); }); - popover.link_open.connect(() => { - this.application.show_uri.begin(popover.link_uri); - }); return popover; } @@ -2721,7 +2720,7 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { LinkPopover popover = this.new_link_popover.end(res); popover.set_relative_to(this.editor); popover.set_pointing_to(location); - popover.show(); + popover.popup(); }); } return Gdk.EVENT_PROPAGATE; @@ -2833,6 +2832,8 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { this.new_link_popover.begin(type, url, (obj, res) => { LinkPopover popover = this.new_link_popover.end(res); + var style = this.insert_link_button.get_style_context(); + // We have to disconnect then reconnect the selection // changed signal for the duration of the popover // being active since if the user selects the text in @@ -2842,10 +2843,12 @@ public class Composer.Widget : Gtk.EventBox, Geary.BaseInterface { this.editor.selection_changed.disconnect(on_selection_changed); popover.closed.connect(() => { this.editor.selection_changed.connect(on_selection_changed); + style.set_state(NORMAL); }); popover.set_relative_to(this.insert_link_button); - popover.show(); + popover.popup(); + style.set_state(ACTIVE); }); } diff --git a/ui/composer-link-popover.ui b/ui/composer-link-popover.ui index 0d4a9396..463578ed 100644 --- a/ui/composer-link-popover.ui +++ b/ui/composer-link-popover.ui @@ -5,6 +5,7 @@