summaryrefslogtreecommitdiffstats
path: root/src/ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui.c')
-rw-r--r--src/ui.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/ui.c b/src/ui.c
index d7feb7e..9e207a6 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -32,10 +32,13 @@ void dc_ui_spawn_message (struct dc_message * m, struct dc_ui_data * d) { /* !m
char t[DC_USMTL];
char * c;
GtkGrid * g = GTK_GRID(gtk_builder_get_object(d->b, "dc_main_messages"));
+ struct dc_guild * guild = m->channel->guild;
+ if (!guild) /* DM message! */
+ guild = d->c->guilds[0];
if (!m) {
while (gtk_grid_get_child_at(g, 0, 0))
gtk_grid_remove_row(g, 0);
- /* struct dc_channel * c = m->channel->guild->channel; */ /* XXX: I wrote this line of code but then I wen't to sleep and I can't remember what should I do here with the channel :shrug: */
+ /* struct dc_channel * c = guild->channel; */ /* XXX: I wrote this line of code but then I wen't to sleep and I can't remember what should I do here with the channel :shrug: */
return;
}
while ((w = gtk_grid_get_child_at(g, 0, i))) { /* now we get the index BEFORE which message will be placed */
@@ -67,7 +70,7 @@ void dc_ui_spawn_message (struct dc_message * m, struct dc_ui_data * d) { /* !m
gtk_container_add(GTK_CONTAINER(b), gtk_label_new(t));
g_object_set_data(G_OBJECT(b), "message", m);
gtk_grid_attach(g /* grid */, b /* widget to insert */, 0 /* left */, i /* top */, 1 /* width */, 1 /* height */);
- /* if (m->user == m->channel->guild->client->user) */ /* TODO: if I posted the message, make it an editable textview */
+ /* if (m->user == guild->client->user) */ /* TODO: if I posted the message, make it an editable textview */
gtk_grid_attach(g, GTK_WIDGET(gtk_label_new(m->message)), 1, i, 1, 1);
gtk_widget_show_all(GTK_WIDGET(g));
gtk_widget_show_all(GTK_WIDGET(g));
@@ -80,21 +83,21 @@ void dc_ui_spawn_channel (struct dc_channel * c /* needs a functional guild or s
gtk_tree_store_clear(l);
for (size_t i = 0; i < d->c->guilds_length; i++) {
d->c->guilds[i]->is_iter = FALSE;
- struct dc_channel * ch = d->c->guilds[i]->channel;
- while (ch) {
- ch->is_iter = FALSE;
- ch = ch->next;
- }
+ for (size_t j = 0; j < d->c->guilds[i]->channels_length; j++)
+ d->c->guilds[i]->channels[j]->is_iter = FALSE;
}
}
- if (!c->guild->is_iter) { /* we don't have this guild already rendered */
+ struct dc_guild * guild = c->guild;
+ if (!guild) /* DM channel! */
+ guild = d->c->guilds[0];
+ if (!guild->is_iter) { /* we don't have this guild already rendered */
gtk_tree_store_insert(l, &i, NULL, -1 /* row position */);
- gtk_tree_store_set(l, &i, 0, c->guild->name, -1);
- gtk_tree_store_set(l, &i, 1, c->guild, -1);
- memcpy(&c->guild->iter, &i, sizeof(GtkTreeIter));
- c->guild->is_iter = TRUE;
+ gtk_tree_store_set(l, &i, 0, guild->name, -1);
+ gtk_tree_store_set(l, &i, 1, guild, -1);
+ memcpy(&guild->iter, &i, sizeof(GtkTreeIter));
+ guild->is_iter = TRUE;
}
- gtk_tree_store_insert(l, &i, &c->guild->iter, -1); /* for this to work, iter must not be same as parent! */
+ gtk_tree_store_insert(l, &i, &guild->iter, -1); /* for this to work, iter must not be same as parent! */
gtk_tree_store_set(l, &i, 0, c->name, -1); /* TODO: set hover tooltip for c->topic */
gtk_tree_store_set(l, &i, 1, c, -1);
memcpy(&c->iter, &i, sizeof(GtkTreeIter));