-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcontextmenu.vala
32 lines (29 loc) · 988 Bytes
/
contextmenu.vala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class TabbedMux.ContextMenu : Gtk.Menu {
private string url;
internal ContextMenu (string url) {
unowned ContextMenu unowned_this = this;
this.url = url;
var open = new Gtk.MenuItem.with_label ("Open Link");
append (open);
open.activate.connect (unowned_this.open);
var copy = new Gtk.MenuItem.with_label ("Copy Link Address");
append (copy);
copy.activate.connect (unowned_this.copy);
show_all ();
}
private void open () {
try {
AppInfo.launch_default_for_uri (url, null);
} catch (Error e) {
var dialog = new Gtk.MessageDialog (get_toplevel () as Gtk.Window, Gtk.DialogFlags.MODAL, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK, "%s", e.message);
unowned Gtk.Widget unowned_this = dialog;
dialog.response.connect (() => unowned_this.destroy ());
dialog.show ();
}
}
private void copy () {
var display = get_display ();
var clipboard = Gtk.Clipboard.get_for_display (display, Gdk.SELECTION_CLIPBOARD);
clipboard.set_text (url, -1);
}
}