From 77e1d677232eeab371a8ac2da1e542bc62bbaea6 Mon Sep 17 00:00:00 2001 From: Florian Zeitz Date: Tue, 1 Jan 2013 22:55:11 +0100 Subject: [PATCH] Build roster window in JubGtkRosterUI --- src/gui/gtk/JubGtkRosterUI.h | 5 ++--- src/gui/gtk/JubGtkRosterUI.m | 24 ++++++++++++++---------- src/gui/gtk/JubGtkUI.h | 1 - src/gui/gtk/JubGtkUI.m | 17 ++--------------- 4 files changed, 18 insertions(+), 29 deletions(-) diff --git a/src/gui/gtk/JubGtkRosterUI.h b/src/gui/gtk/JubGtkRosterUI.h index 1fd0394..5aa41b3 100644 --- a/src/gui/gtk/JubGtkRosterUI.h +++ b/src/gui/gtk/JubGtkRosterUI.h @@ -6,6 +6,7 @@ @interface JubGtkRosterUI: OFObject { + GtkWidget *roster_window; GtkTreeStore *roster_model; GtkTreeModelFilter *roster_filter; OFMapTable *groupMap; @@ -13,10 +14,8 @@ OFMutableDictionary *chatMap; OFCountedSet *presences; XMPPConnection *connection; - GtkBuilder *builder; } -- initWithBuilder: (GtkBuilder*)builder - connection: (XMPPConnection*)connection; +- initWithConnection: (XMPPConnection*)connection; - (JubGtkChatUI*)chatForJID: (XMPPJID*)jid; @end diff --git a/src/gui/gtk/JubGtkRosterUI.m b/src/gui/gtk/JubGtkRosterUI.m index 66a050e..b3899e3 100644 --- a/src/gui/gtk/JubGtkRosterUI.m +++ b/src/gui/gtk/JubGtkRosterUI.m @@ -80,14 +80,14 @@ static gboolean filter_roster_by_presence(GtkTreeModel *model, } @implementation JubGtkRosterUI -- initWithBuilder: (GtkBuilder*)builder_ - connection: (XMPPConnection*)connection_ +- initWithConnection: (XMPPConnection*)connection_ { self = [super init]; @try { GtkTreeView *roster_view; GtkComboBox *presence_combo; + GtkBuilder *builder; groupMap = [[OFMapTable alloc] initWithKeyFunctions: keyFunctions @@ -97,7 +97,14 @@ static gboolean filter_roster_by_presence(GtkTreeModel *model, presences = [[OFCountedSet alloc] init]; connection = [connection_ retain]; - builder = g_object_ref(builder_); + builder = gtk_builder_new(); + gtk_builder_add_from_file(builder, "data/gtk/roster.ui", NULL); + gtk_builder_connect_signals(builder, NULL); + + roster_window = + GTK_WIDGET(gtk_builder_get_object(builder, "RosterWindow")); + + gtk_widget_show(roster_window); roster_model = GTK_TREE_STORE(gtk_builder_get_object(builder, "RosterTreeStore")); @@ -119,6 +126,8 @@ static gboolean filter_roster_by_presence(GtkTreeModel *model, g_signal_connect(presence_combo, "changed", G_CALLBACK(presence_changed), connection); + + g_object_unref(G_OBJECT(builder)); } @catch (id e) { [self release]; @throw e; @@ -131,16 +140,11 @@ static gboolean filter_roster_by_presence(GtkTreeModel *model, { [groupMap release]; [contactMap release]; + [chatMap release]; [presences release]; [connection release]; - if (roster_model) - g_object_unref(roster_model); - - if (roster_filter) - g_object_unref(roster_filter); - - g_object_unref(builder); + gtk_widget_destroy(roster_window); [super dealloc]; } diff --git a/src/gui/gtk/JubGtkUI.h b/src/gui/gtk/JubGtkUI.h index add8d76..afec54e 100644 --- a/src/gui/gtk/JubGtkUI.h +++ b/src/gui/gtk/JubGtkUI.h @@ -9,7 +9,6 @@ @interface JubGtkUI: OFObject { JubGtkRosterUI *rosterUI; - GtkBuilder *builder; } - initWithConnection: (XMPPConnection*)connection; diff --git a/src/gui/gtk/JubGtkUI.m b/src/gui/gtk/JubGtkUI.m index 26c2cbb..b6110f4 100644 --- a/src/gui/gtk/JubGtkUI.m +++ b/src/gui/gtk/JubGtkUI.m @@ -23,11 +23,8 @@ void on_roster_window_destroy(GObject *object, gpointer user_data) gtk_init(argc, argv); - builder = gtk_builder_new(); - gtk_builder_add_from_file(builder, "data/gtk/roster.ui", NULL); - - rosterUI = [[JubGtkRosterUI alloc] initWithBuilder: builder - connection: connection]; + rosterUI = [[JubGtkRosterUI alloc] + initWithConnection: connection]; } @catch (id e) { [self release]; @throw e; @@ -39,22 +36,12 @@ void on_roster_window_destroy(GObject *object, gpointer user_data) - (void)dealloc { [rosterUI release]; - g_object_unref(G_OBJECT(builder)); [super dealloc]; } - (void)startUIThread { - GtkWidget *roster_window; - - roster_window = - GTK_WIDGET(gtk_builder_get_object(builder, "RosterWindow")); - - gtk_builder_connect_signals(builder, NULL); - - gtk_widget_show(roster_window); - [[OFThread threadWithBlock: ^(void){ gtk_main(); [OFApplication terminate]; -- 2.39.2