X-Git-Url: http://cgit.babelmonkeys.de/?p=jubjub.git;a=blobdiff_plain;f=src%2Fgui%2Fgtk%2FJubGtkRosterUI.m;h=b3899e34a1d750edf1e57d0d6961d4a8f4baf326;hp=d63608e08be91b81d4b82a72e08ac16732cbaf4e;hb=77e1d677232eeab371a8ac2da1e542bc62bbaea6;hpb=630cb7a445daeee274fee51937283be165467170 diff --git a/src/gui/gtk/JubGtkRosterUI.m b/src/gui/gtk/JubGtkRosterUI.m index d63608e..b3899e3 100644 --- a/src/gui/gtk/JubGtkRosterUI.m +++ b/src/gui/gtk/JubGtkRosterUI.m @@ -5,7 +5,7 @@ #include -static gboolean roster_row_activated(GtkTreeView *tree_view, GtkTreePath *path, +static void roster_row_activated(GtkTreeView *tree_view, GtkTreePath *path, GtkTreeViewColumn *column, gpointer data) { JubGtkRosterUI *roster = data; @@ -20,7 +20,7 @@ static gboolean roster_row_activated(GtkTreeView *tree_view, GtkTreePath *path, gtk_tree_model_get(tree_model, &row_iter, 1, &jid_s, -1); // This was a group row - if (!jid_s) return TRUE; + if (!jid_s) return; pool = [OFAutoreleasePool new]; jid = [XMPPJID JIDWithString: [OFString stringWithUTF8String: jid_s]]; @@ -29,8 +29,6 @@ static gboolean roster_row_activated(GtkTreeView *tree_view, GtkTreePath *path, withObject: jid waitUntilDone: NO]; [pool release]; - - return TRUE; } static void presence_changed(GtkComboBox *combo_box, gpointer data) @@ -82,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 @@ -99,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")); @@ -121,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; @@ -133,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]; }