parent
8a64c8501d
commit
cdc505f550
|
@ -11,6 +11,7 @@ public class ChatInputController : Object {
|
|||
|
||||
public signal void activate_last_message_correction();
|
||||
public signal void file_picker_selected();
|
||||
public signal void clipboard_pasted();
|
||||
|
||||
public new string? conversation_display_name { get; set; }
|
||||
public string? conversation_topic { get; set; }
|
||||
|
@ -35,6 +36,7 @@ public class ChatInputController : Object {
|
|||
|
||||
chat_input.chat_text_view.text_view.buffer.changed.connect(on_text_input_changed);
|
||||
chat_input.chat_text_view.text_view.key_press_event.connect(on_text_input_key_press);
|
||||
chat_input.chat_text_view.text_view.paste_clipboard.connect(() => clipboard_pasted());
|
||||
|
||||
chat_text_view_controller.send_text.connect(send_text);
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ public class ConversationViewController : Object {
|
|||
this.chat_input_controller = new ChatInputController(view.chat_input, stream_interactor);
|
||||
chat_input_controller.activate_last_message_correction.connect(() => view.conversation_frame.activate_last_message_correction());
|
||||
chat_input_controller.file_picker_selected.connect(() => open_file_picker());
|
||||
chat_input_controller.clipboard_pasted.connect(on_clipboard_paste);
|
||||
|
||||
view.conversation_frame.init(stream_interactor);
|
||||
|
||||
|
@ -165,6 +166,19 @@ public class ConversationViewController : Object {
|
|||
}
|
||||
}
|
||||
|
||||
private void on_clipboard_paste() {
|
||||
Clipboard clipboard = Clipboard.get(Gdk.SELECTION_CLIPBOARD);
|
||||
if (clipboard.wait_is_image_available()) {
|
||||
clipboard.request_image((_, pixbuf) => {
|
||||
File file = File.new_for_path(Path.build_filename(FileManager.get_storage_dir(), Xmpp.random_uuid() + ".png"));
|
||||
DataOutputStream fos = new DataOutputStream(file.create(FileCreateFlags.REPLACE_DESTINATION));
|
||||
pixbuf.save_to_stream_async.begin(fos, "png", null, () => {
|
||||
open_send_file_overlay(file);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void on_drag_data_received(Widget widget, Gdk.DragContext context, int x, int y, SelectionData selection_data, uint target_type, uint time) {
|
||||
if ((selection_data != null) && (selection_data.get_length() >= 0)) {
|
||||
switch (target_type) {
|
||||
|
|
Loading…
Reference in a new issue