COL_STATE,
COL_STATUS_TEXT,
COL_DISPLAY_MARKUP,
+ COL_STATUS_CUSTOMISABLE,
COL_TYPE,
N_COLUMNS
};
MC_TYPE_PRESENCE, /* COL_STATE */
G_TYPE_STRING, /* COL_STATUS_TEXT */
G_TYPE_STRING, /* COL_DISPLAY_MARKUP */
+ G_TYPE_BOOLEAN, /* COL_STATUS_CUSTOMISABLE */
G_TYPE_INT); /* COL_TYPE */
GtkTreeIter iter;
COL_STATE, states[i],
COL_STATUS_TEXT, status,
COL_DISPLAY_MARKUP, status,
+ COL_STATUS_CUSTOMISABLE, states[i+1],
COL_TYPE, ENTRY_TYPE_BUILTIN,
-1);
COL_STATE, states[i],
COL_STATUS_TEXT, l->data,
COL_DISPLAY_MARKUP, l->data,
+ COL_STATUS_CUSTOMISABLE, TRUE,
COL_TYPE, ENTRY_TYPE_SAVED,
-1);
}
COL_STATE, states[i],
COL_STATUS_TEXT, "",
COL_DISPLAY_MARKUP, "<i>Custom Message...</i>",
+ COL_STATUS_CUSTOMISABLE, TRUE,
COL_TYPE, ENTRY_TYPE_CUSTOM,
-1);
}
GtkTreeIter iter;
char *icon_name;
+ gboolean customisable = TRUE;
int type = -1;
GtkTreeModel *model = gtk_combo_box_get_model (self);
gtk_tree_model_get (model, &iter,
COL_STATE_ICON_NAME, &icon_name,
COL_STATE, &priv->state,
+ COL_STATUS_CUSTOMISABLE, &customisable,
COL_TYPE, &type,
-1);
GtkWidget *entry = gtk_bin_get_child (GTK_BIN (self));
+ /* some types of status aren't editable, set the editability of the
+ * entry appropriately. Unless we're just about to reset it anyway,
+ * in which case, don't fiddle with it */
+ /* FIXME: there is a bug here, if we start in the Hidden state, it
+ * will be editable. It's not something that often occurs though. */
+ if (type != ENTRY_TYPE_EDIT_CUSTOM)
+ {
+ gtk_editable_set_editable (GTK_EDITABLE (entry), customisable);
+ }
+
if (type == ENTRY_TYPE_EDIT_CUSTOM)
{
/* recover the status that was unset because COL_STATUS_TEXT