mirror of
https://github.com/davatorium/rofi.git
synced 2025-02-10 15:44:41 -05:00
parent
2c56e5ca33
commit
f3bb043df0
4 changed files with 44 additions and 22 deletions
|
@ -1043,28 +1043,32 @@ The offset of the window to the anchor point, allowing you to push the window le
|
||||||
.SS textbox:
|
.SS textbox:
|
||||||
.RS
|
.RS
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBbackground\-color\fP: color
|
\fBbackground\-color\fP: color
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBborder\-color\fP: the color used for the border around the widget.
|
\fBborder\-color\fP: the color used for the border around the widget.
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBfont\fP: the font used by this textbox (string).
|
\fBfont\fP: the font used by this textbox (string).
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBstr\fP: the string to display by this textbox (string).
|
\fBstr\fP: the string to display by this textbox (string).
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBvertical\-align\fP: vertical alignment of the text (\fB\fC0\fR top, \fB\fC1\fR bottom).
|
\fBvertical\-align\fP: vertical alignment of the text (\fB\fC0\fR top, \fB\fC1\fR bottom).
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBhorizontal\-align\fP: horizontal alignment of the text (\fB\fC0\fR left, \fB\fC1\fR right).
|
\fBhorizontal\-align\fP: horizontal alignment of the text (\fB\fC0\fR left, \fB\fC1\fR right).
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBtext\-color\fP: the text color to use.
|
\fBtext\-color\fP: the text color to use.
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBhighlight\fP: text style {color}.
|
\fBhighlight\fP: text style {color}.
|
||||||
color is optional, multiple highlight styles can be added like: bold underline italic #000000;
|
color is optional, multiple highlight styles can be added like: bold underline italic #000000;
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBwidth\fP: override the desired width for the textbox.
|
\fBwidth\fP: override the desired width for the textbox.
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBcontent\fP: Set the displayed text (String).
|
\fBcontent\fP: Set the displayed text (String).
|
||||||
.IP \(bu 2
|
.IP \(bu 2
|
||||||
\fBblink\fP: Enable/Disable blinking on an input textbox (Boolean).
|
\fBplaceholder\fP: Set the displayed text (String) when nothing is entered.
|
||||||
|
.IP \(bu 2
|
||||||
|
\fBplaceholder\-color\fP: Color of the placeholder text.
|
||||||
|
.IP \(bu 2
|
||||||
|
\fBblink\fP: Enable/Disable blinking on an input textbox (Boolean).
|
||||||
|
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
|
|
|
@ -639,18 +639,20 @@ The following properties are currently supported:
|
||||||
|
|
||||||
### textbox:
|
### textbox:
|
||||||
|
|
||||||
* **background-color**: color
|
* **background-color**: color
|
||||||
* **border-color**: the color used for the border around the widget.
|
* **border-color**: the color used for the border around the widget.
|
||||||
* **font**: the font used by this textbox (string).
|
* **font**: the font used by this textbox (string).
|
||||||
* **str**: the string to display by this textbox (string).
|
* **str**: the string to display by this textbox (string).
|
||||||
* **vertical-align**: vertical alignment of the text (`0` top, `1` bottom).
|
* **vertical-align**: vertical alignment of the text (`0` top, `1` bottom).
|
||||||
* **horizontal-align**: horizontal alignment of the text (`0` left, `1` right).
|
* **horizontal-align**: horizontal alignment of the text (`0` left, `1` right).
|
||||||
* **text-color**: the text color to use.
|
* **text-color**: the text color to use.
|
||||||
* **highlight**: text style {color}.
|
* **highlight**: text style {color}.
|
||||||
color is optional, multiple highlight styles can be added like: bold underline italic #000000;
|
color is optional, multiple highlight styles can be added like: bold underline italic #000000;
|
||||||
* **width**: override the desired width for the textbox.
|
* **width**: override the desired width for the textbox.
|
||||||
* **content**: Set the displayed text (String).
|
* **content**: Set the displayed text (String).
|
||||||
* **blink**: Enable/Disable blinking on an input textbox (Boolean).
|
* **placeholder**: Set the displayed text (String) when nothing is entered.
|
||||||
|
* **placeholder-color**: Color of the placeholder text.
|
||||||
|
* **blink**: Enable/Disable blinking on an input textbox (Boolean).
|
||||||
|
|
||||||
### listview:
|
### listview:
|
||||||
* **columns**: integer
|
* **columns**: integer
|
||||||
|
|
|
@ -53,6 +53,8 @@ typedef struct
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
short cursor;
|
short cursor;
|
||||||
char *text;
|
char *text;
|
||||||
|
const char *placeholder;
|
||||||
|
int show_placeholder;
|
||||||
PangoLayout *layout;
|
PangoLayout *layout;
|
||||||
int tbft;
|
int tbft;
|
||||||
int markup;
|
int markup;
|
||||||
|
|
|
@ -192,6 +192,10 @@ textbox* textbox_create ( widget *parent, WidgetType type, const char *name, Tex
|
||||||
if ( !txt ){
|
if ( !txt ){
|
||||||
txt = rofi_theme_get_string ( WIDGET ( tb ), "content", text );
|
txt = rofi_theme_get_string ( WIDGET ( tb ), "content", text );
|
||||||
}
|
}
|
||||||
|
const char *placeholder = rofi_theme_get_string ( WIDGET(tb), "placeholder", NULL);
|
||||||
|
if ( placeholder){
|
||||||
|
tb->placeholder = placeholder;
|
||||||
|
}
|
||||||
textbox_text ( tb, txt ? txt : "" );
|
textbox_text ( tb, txt ? txt : "" );
|
||||||
textbox_cursor_end ( tb );
|
textbox_cursor_end ( tb );
|
||||||
|
|
||||||
|
@ -264,6 +268,13 @@ void textbox_font ( textbox *tb, TextBoxFontType tbft )
|
||||||
static void __textbox_update_pango_text ( textbox *tb )
|
static void __textbox_update_pango_text ( textbox *tb )
|
||||||
{
|
{
|
||||||
pango_layout_set_attributes ( tb->layout, NULL );
|
pango_layout_set_attributes ( tb->layout, NULL );
|
||||||
|
if ( tb->placeholder && (tb->text == NULL || tb->text[0] == 0) )
|
||||||
|
{
|
||||||
|
tb->show_placeholder = TRUE;
|
||||||
|
pango_layout_set_text ( tb->layout, tb->placeholder, -1 );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tb->show_placeholder = FALSE;
|
||||||
if ( ( tb->flags & TB_PASSWORD ) == TB_PASSWORD ) {
|
if ( ( tb->flags & TB_PASSWORD ) == TB_PASSWORD ) {
|
||||||
size_t l = g_utf8_strlen ( tb->text, -1 );
|
size_t l = g_utf8_strlen ( tb->text, -1 );
|
||||||
char string [l + 1];
|
char string [l + 1];
|
||||||
|
@ -430,6 +441,9 @@ static void textbox_draw ( widget *wid, cairo_t *draw )
|
||||||
cairo_set_operator ( draw, CAIRO_OPERATOR_OVER );
|
cairo_set_operator ( draw, CAIRO_OPERATOR_OVER );
|
||||||
cairo_set_source_rgb ( draw, 0.0, 0.0, 0.0 );
|
cairo_set_source_rgb ( draw, 0.0, 0.0, 0.0 );
|
||||||
rofi_theme_get_color ( WIDGET ( tb ), "text-color", draw );
|
rofi_theme_get_color ( WIDGET ( tb ), "text-color", draw );
|
||||||
|
if ( tb->show_placeholder ) {
|
||||||
|
rofi_theme_get_color ( WIDGET ( tb ), "placeholder-color", draw );
|
||||||
|
}
|
||||||
// draw the cursor
|
// draw the cursor
|
||||||
if ( tb->flags & TB_EDITABLE && tb->blink ) {
|
if ( tb->flags & TB_EDITABLE && tb->blink ) {
|
||||||
// We want to place the cursor based on the text shown.
|
// We want to place the cursor based on the text shown.
|
||||||
|
|
Loading…
Add table
Reference in a new issue