diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-05-02 00:35:22 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-05-02 00:35:22 +0000 |
| commit | 66d6e1120ec4e66433ecec673258856def164070 (patch) | |
| tree | c8737ad9ab52c9883b572c6ced2d2dbecefe2e6f /openbox/popup.c | |
| parent | a223fa20579fec9ba731e426b0a28ce983862b6c (diff) | |
small change to the render API. RrMinsize became RrMinSize. added RrMinWidth and RrMinHeight.
make focus/desktop popups wider based on the screen size with the old size as a minimum.
left-align the desktop dialog.. i think better dialogs would be nice. and to make them hide or something when you switch desktops while switching windows etc.
Diffstat (limited to 'openbox/popup.c')
| -rw-r--r-- | openbox/popup.c | 54 |
1 files changed, 40 insertions, 14 deletions
diff --git a/openbox/popup.c b/openbox/popup.c index 9af23be0..392aa9d1 100644 --- a/openbox/popup.c +++ b/openbox/popup.c @@ -75,25 +75,52 @@ void popup_position(ObPopup *self, gint gravity, gint x, gint y) self->y = y; } -void popup_size(ObPopup *self, gint w, gint h) +void popup_width(ObPopup *self, gint w) { self->w = w; - self->h = h; } -void popup_size_to_string(ObPopup *self, gchar *text) +void popup_height(ObPopup *self, gint h) { - gint textw, texth; - gint iconw; + gint texth; - self->a_text->texture[0].data.text.string = text; - RrMinsize(self->a_text, &textw, &texth); - /*XXX textw += ob_rr_theme->bevel * 2;*/ - texth += ob_rr_theme->paddingy * 2; + /* don't let the height be smaller than the text */ + texth = RrMinHeight(self->a_text) + ob_rr_theme->paddingy * 2; + self->h = MAX(h, texth); +} - self->h = texth + ob_rr_theme->paddingy * 2; - iconw = (self->hasicon ? texth : 0); +void popup_width_to_string(ObPopup *self, gchar *text, gint max) +{ + gint textw, iconw; + + self->a_text->texture[0].data.text.string = text; + textw = RrMinWidth(self->a_text); + if (self->hasicon) { + gint texth = RrMinHeight(self->a_text) + ob_rr_theme->paddingy * 2; + iconw = texth; + } else + iconw = 0; self->w = textw + iconw + ob_rr_theme->paddingx * (self->hasicon ? 3 : 2); + /* cap it at "max" */ + if (max > 0) + self->w = MIN(self->w, max); +} + +void popup_height_to_string(ObPopup *self, gchar *text) +{ + self->h = RrMinHeight(self->a_text) + ob_rr_theme->paddingy * 2; +} + +void popup_width_to_strings(ObPopup *self, gchar **strings, gint max) +{ + gint i, maxw; + + maxw = 0; + for (i = 0; strings[i] != NULL; ++i) { + popup_width_to_string(self, strings[i], max); + maxw = MAX(maxw, self->w); + } + self->w = maxw; } void popup_set_text_align(ObPopup *self, RrJustify align) @@ -122,9 +149,8 @@ void popup_show(ObPopup *self, gchar *text) /* set up the textures */ self->a_text->texture[0].data.text.string = text; - /* measure the shit out */ - RrMinsize(self->a_text, &textw, &texth); - /*XXX textw += ob_rr_theme->padding * 2;*/ + /* measure the text out */ + RrMinSize(self->a_text, &textw, &texth); texth += ob_rr_theme->paddingy * 2; /* set the sizes up and reget the text sizes from the calculated |
