anotherim-desktop/main/src/ui/conversation_list_titlebar.vala
hrxi e876f4b316 Fix a couple of warnings relating to parents of dialogs
Fixes these kind of warnings:
```
(dino:<PID>): Gtk-CRITICAL **: gtk_window_set_transient_for: assertion 'parent == NULL || GTK_IS_WINDOW (parent)' failed
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
(dino:<PID>): GLib-GObject-WARNING **: invalid cast from 'GtkPaned' to 'GtkWindow'
```

Also centers these dialogs (settings, add chat, join conversation) on
top of their parent windows.
2017-05-09 14:53:26 +02:00

48 lines
1.9 KiB
Vala

using Gtk;
using Dino.Entities;
namespace Dino.Ui {
[GtkTemplate (ui = "/org/dino-im/conversation_list_titlebar.ui")]
public class ConversationListTitlebar : Gtk.HeaderBar {
public signal void conversation_opened(Conversation conversation);
[GtkChild] private MenuButton add_button;
[GtkChild] public ToggleButton search_button;
private StreamInteractor stream_interactor;
public ConversationListTitlebar(Window application, StreamInteractor stream_interactor) {
this.stream_interactor = stream_interactor;
create_add_menu(application);
}
private void create_add_menu(Window window) {
SimpleAction contacts_action = new SimpleAction("add_chat", null);
contacts_action.activate.connect(() => {
AddConversation.Chat.Dialog add_chat_dialog = new AddConversation.Chat.Dialog(stream_interactor);
add_chat_dialog.set_transient_for(window);
add_chat_dialog.conversation_opened.connect((conversation) => conversation_opened(conversation));
add_chat_dialog.show();
});
window.get_application().add_action(contacts_action);
SimpleAction conference_action = new SimpleAction("add_conference", null);
conference_action.activate.connect(() => {
AddConversation.Conference.Dialog add_conference_dialog = new AddConversation.Conference.Dialog(stream_interactor);
add_conference_dialog.set_transient_for(window);
add_conference_dialog.conversation_opened.connect((conversation) => conversation_opened(conversation));
add_conference_dialog.show();
});
window.get_application().add_action(conference_action);
Builder builder = new Builder.from_resource("/org/dino-im/menu_add.ui");
MenuModel menu = builder.get_object("menu_add") as MenuModel;
add_button.set_menu_model(menu);
}
}
}