diff -r 49bc645df8b7 -r 1cc365c34125 ui/gtk/text.c --- a/ui/gtk/text.c Wed Jan 27 20:55:37 2016 +0100 +++ b/ui/gtk/text.c Fri Jan 29 18:48:56 2016 +0100 @@ -455,15 +455,18 @@ } -UIWIDGET ui_textfield(UiObject *obj, UiString *value) { - return ui_textfield_w(obj, 0, value); -} - -UIWIDGET ui_textfield_w(UiObject *obj, int width, UiString *value) { +static UIWIDGET create_textfield(UiObject *obj, int width, UiBool frameless, UiBool password, UiString *value) { GtkWidget *textfield = gtk_entry_new(); if(width > 0) { gtk_entry_set_width_chars(GTK_ENTRY(textfield), width); } + if(frameless) { + // TODO: gtk2legacy workaroud + gtk_entry_set_has_frame(GTK_ENTRY(textfield), FALSE); + } + if(password) { + gtk_entry_set_visibility(GTK_ENTRY(textfield), FALSE); + } UiContainer *ct = uic_get_current_container(obj); ct->add(ct, textfield, FALSE); @@ -484,21 +487,57 @@ return textfield; } -UIWIDGET ui_textfield_nv(UiObject *obj, char *varname) { - return ui_textfield_wnv(obj, 0, varname); -} - -UIWIDGET ui_textfield_wnv(UiObject *obj, int width, char *varname) { +static UIWIDGET create_textfield_nv(UiObject *obj, int width, UiBool frameless, UiBool password, char *varname) { UiVar *var = uic_connect_var(obj->ctx, varname, UI_VAR_STRING); if(var) { UiString *value = var->value; - return ui_textfield_w(obj, width, value); + return create_textfield(obj, width, frameless, password, value); } else { // TODO: error } return NULL; } +UIWIDGET ui_textfield(UiObject *obj, UiString *value) { + return create_textfield(obj, 0, FALSE, FALSE, value); +} + +UIWIDGET ui_textfield_w(UiObject *obj, int width, UiString *value) { + return create_textfield(obj, width, FALSE, FALSE, value); +} + +UIWIDGET ui_frameless_textfield(UiObject *obj, UiString *value) { + return create_textfield(obj, 0, TRUE, FALSE, value); +} + +UIWIDGET ui_passwordfield(UiObject *obj, UiString *value) { + return create_textfield(obj, 0, FALSE, TRUE, value); +} + +UIWIDGET ui_passwordfield_w(UiObject *obj, int width, UiString *value) { + return create_textfield(obj, width, FALSE, TRUE, value); +} + +UIWIDGET ui_textfield_nv(UiObject *obj, char *varname) { + return create_textfield_nv(obj, 0, FALSE, FALSE, varname); +} + +UIWIDGET ui_textfield_wnv(UiObject *obj, int width, char *varname) { + return create_textfield_nv(obj, width, FALSE, FALSE, varname); +} + +UIWIDGET ui_frameless_textfield_nv(UiObject *obj, char *varname) { + return create_textfield_nv(obj, 0, TRUE, FALSE, varname); +} + +UIWIDGET ui_passwordfield_nv(UiObject *obj, char *varname) { + return create_textfield_nv(obj, 0, FALSE, TRUE, varname); +} + +UIWIDGET ui_passwordfield_wnv(UiObject *obj, int width, char *varname) { + return create_textfield_nv(obj, width, FALSE, TRUE, varname); +} + char* ui_textfield_get(UiString *str) { if(str->value) { g_free(str->value);