diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Basemenu.cc | 64 | ||||
-rw-r--r-- | src/Theme.cc | 54 | ||||
-rw-r--r-- | src/Theme.hh | 6 |
3 files changed, 51 insertions, 73 deletions
diff --git a/src/Basemenu.cc b/src/Basemenu.cc index 354f4e6..46a5735 100644 --- a/src/Basemenu.cc +++ b/src/Basemenu.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Basemenu.cc,v 1.22 2002/04/28 15:54:59 fluxgen Exp $ | 25 | // $Id: Basemenu.cc,v 1.23 2002/05/15 09:35:49 fluxgen Exp $ |
26 | 26 | ||
27 | //use GNU extensions | 27 | //use GNU extensions |
28 | #ifndef _GNU_SOURCE | 28 | #ifndef _GNU_SOURCE |
@@ -95,12 +95,12 @@ m_alignment(ALIGNDONTCARE) { | |||
95 | 95 | ||
96 | if (i18n->multibyte()) { | 96 | if (i18n->multibyte()) { |
97 | menu.width = menu.title_h = menu.item_w = menu.frame_h = | 97 | menu.width = menu.title_h = menu.item_w = menu.frame_h = |
98 | m_screen->getMenuStyle()->titlefont->getFontSetExtents()->max_ink_extent.height + | 98 | m_screen->getMenuStyle()->titlefont.getFontSetExtents()->max_ink_extent.height + |
99 | (menu.bevel_w * 2); | 99 | (menu.bevel_w * 2); |
100 | } else { | 100 | } else { |
101 | menu.width = menu.title_h = menu.item_w = menu.frame_h = | 101 | menu.width = menu.title_h = menu.item_w = menu.frame_h = |
102 | m_screen->getMenuStyle()->titlefont->getFontStruct()->ascent + | 102 | m_screen->getMenuStyle()->titlefont.getFontStruct()->ascent + |
103 | m_screen->getMenuStyle()->titlefont->getFontStruct()->descent + | 103 | m_screen->getMenuStyle()->titlefont.getFontStruct()->descent + |
104 | (menu.bevel_w * 2); | 104 | (menu.bevel_w * 2); |
105 | } | 105 | } |
106 | 106 | ||
@@ -109,11 +109,11 @@ m_alignment(ALIGNDONTCARE) { | |||
109 | menu.minsub = 0; | 109 | menu.minsub = 0; |
110 | 110 | ||
111 | if (i18n->multibyte()) { | 111 | if (i18n->multibyte()) { |
112 | menu.item_h = m_screen->getMenuStyle()->framefont->getFontSetExtents()->max_ink_extent.height + | 112 | menu.item_h = m_screen->getMenuStyle()->framefont.getFontSetExtents()->max_ink_extent.height + |
113 | (menu.bevel_w); | 113 | (menu.bevel_w); |
114 | } else { | 114 | } else { |
115 | menu.item_h = m_screen->getMenuStyle()->framefont->getFontStruct()->ascent + | 115 | menu.item_h = m_screen->getMenuStyle()->framefont.getFontStruct()->ascent + |
116 | m_screen->getMenuStyle()->framefont->getFontStruct()->descent + | 116 | m_screen->getMenuStyle()->framefont.getFontStruct()->descent + |
117 | (menu.bevel_w); | 117 | (menu.bevel_w); |
118 | } | 118 | } |
119 | menu.height = menu.title_h + m_screen->getBorderWidth() + menu.frame_h; | 119 | menu.height = menu.title_h + m_screen->getBorderWidth() + menu.frame_h; |
@@ -260,16 +260,16 @@ void Basemenu::update(void) { | |||
260 | I18n *i18n = I18n::instance(); | 260 | I18n *i18n = I18n::instance(); |
261 | 261 | ||
262 | if (i18n->multibyte()) { | 262 | if (i18n->multibyte()) { |
263 | menu.item_h = m_screen->getMenuStyle()->framefont->getFontSetExtents()->max_ink_extent.height + | 263 | menu.item_h = m_screen->getMenuStyle()->framefont.getFontSetExtents()->max_ink_extent.height + |
264 | menu.bevel_w; | 264 | menu.bevel_w; |
265 | menu.title_h = m_screen->getMenuStyle()->titlefont->getFontSetExtents()->max_ink_extent.height + | 265 | menu.title_h = m_screen->getMenuStyle()->titlefont.getFontSetExtents()->max_ink_extent.height + |
266 | (menu.bevel_w * 2); | 266 | (menu.bevel_w * 2); |
267 | } else { | 267 | } else { |
268 | menu.item_h = m_screen->getMenuStyle()->framefont->getFontStruct()->ascent + | 268 | menu.item_h = m_screen->getMenuStyle()->framefont.getFontStruct()->ascent + |
269 | m_screen->getMenuStyle()->framefont->getFontStruct()->descent + | 269 | m_screen->getMenuStyle()->framefont.getFontStruct()->descent + |
270 | menu.bevel_w; | 270 | menu.bevel_w; |
271 | menu.title_h = m_screen->getMenuStyle()->titlefont->getFontStruct()->ascent + | 271 | menu.title_h = m_screen->getMenuStyle()->titlefont.getFontStruct()->ascent + |
272 | m_screen->getMenuStyle()->titlefont->getFontStruct()->descent + | 272 | m_screen->getMenuStyle()->titlefont.getFontStruct()->descent + |
273 | (menu.bevel_w * 2); | 273 | (menu.bevel_w * 2); |
274 | } | 274 | } |
275 | 275 | ||
@@ -279,14 +279,15 @@ void Basemenu::update(void) { | |||
279 | FBNLS::BasemenuSet, FBNLS::BasemenuBlackboxMenu, | 279 | FBNLS::BasemenuSet, FBNLS::BasemenuBlackboxMenu, |
280 | "fluxbox Menu"); | 280 | "fluxbox Menu"); |
281 | int l = strlen(s); | 281 | int l = strlen(s); |
282 | 282 | ||
283 | 283 | /* | |
284 | if (i18n->multibyte()) { | 284 | if (i18n->multibyte()) { |
285 | XRectangle ink, logical; | 285 | XRectangle ink, logical; |
286 | XmbTextExtents(m_screen->getMenuStyle()->titlefont->getFontSet(), s, l, &ink, &logical); | 286 | XmbTextExtents(m_screen->getMenuStyle()->titlefont.getFontSet(), s, l, &ink, &logical); |
287 | menu.item_w = logical.width; | 287 | menu.item_w = logical.width; |
288 | } else | 288 | } else*/ |
289 | menu.item_w = XTextWidth(m_screen->getMenuStyle()->titlefont->getFontStruct(), s, l); | 289 | menu.item_w = m_screen->getMenuStyle()->titlefont.getTextWidth(s, l); |
290 | //XTextWidth(m_screen->getMenuStyle()->titlefont.getFontStruct(), s, l); | ||
290 | 291 | ||
291 | menu.item_w += (menu.bevel_w * 2); | 292 | menu.item_w += (menu.bevel_w * 2); |
292 | } else | 293 | } else |
@@ -301,12 +302,15 @@ void Basemenu::update(void) { | |||
301 | const char *s = itmp->label().c_str(); | 302 | const char *s = itmp->label().c_str(); |
302 | int l = itmp->label().size(); | 303 | int l = itmp->label().size(); |
303 | 304 | ||
304 | if (i18n->multibyte()) { | 305 | /*if (i18n->multibyte()) { |
305 | XRectangle ink, logical; | 306 | XRectangle ink, logical; |
306 | XmbTextExtents(m_screen->getMenuStyle()->framefont->getFontSet(), s, l, &ink, &logical); | 307 | XmbTextExtents(m_screen->getMenuStyle()->framefont.getFontSet(), s, l, &ink, &logical); |
307 | ii = logical.width; | 308 | ii = logical.width; |
308 | } else | 309 | } else |
309 | ii = XTextWidth(m_screen->getMenuStyle()->framefont->getFontStruct(), s, l); | 310 | ii = XTextWidth(m_screen->getMenuStyle()->framefont.getFontStruct(), s, l); |
311 | */ | ||
312 | ii = screen()->getMenuStyle()->framefont.getTextWidth(s, l); | ||
313 | |||
310 | 314 | ||
311 | ii += (menu.bevel_w * 2) + (menu.item_h * 2); | 315 | ii += (menu.bevel_w * 2) + (menu.item_h * 2); |
312 | 316 | ||
@@ -485,7 +489,7 @@ void Basemenu::redrawTitle(void) { | |||
485 | int dx = menu.bevel_w, len = strlen(text); | 489 | int dx = menu.bevel_w, len = strlen(text); |
486 | unsigned int l; | 490 | unsigned int l; |
487 | 491 | ||
488 | l = m_screen->getMenuStyle()->titlefont->getTextWidth(text, len); | 492 | l = m_screen->getMenuStyle()->titlefont.getTextWidth(text, len); |
489 | 493 | ||
490 | l += (menu.bevel_w * 2); | 494 | l += (menu.bevel_w * 2); |
491 | 495 | ||
@@ -503,13 +507,13 @@ void Basemenu::redrawTitle(void) { | |||
503 | } | 507 | } |
504 | 508 | ||
505 | if (i18n->multibyte()) | 509 | if (i18n->multibyte()) |
506 | XmbDrawString(m_display, menu.title, m_screen->getMenuStyle()->titlefont->getFontSet(), | 510 | XmbDrawString(m_display, menu.title, m_screen->getMenuStyle()->titlefont.getFontSet(), |
507 | m_screen->getMenuStyle()->t_text_gc, dx, menu.bevel_w - | 511 | m_screen->getMenuStyle()->t_text_gc, dx, menu.bevel_w - |
508 | m_screen->getMenuStyle()->titlefont->getFontSetExtents()->max_ink_extent.y, | 512 | m_screen->getMenuStyle()->titlefont.getFontSetExtents()->max_ink_extent.y, |
509 | text, len); | 513 | text, len); |
510 | else | 514 | else |
511 | XDrawString(m_display, menu.title, m_screen->getMenuStyle()->t_text_gc, dx, | 515 | XDrawString(m_display, menu.title, m_screen->getMenuStyle()->t_text_gc, dx, |
512 | m_screen->getMenuStyle()->titlefont->getFontStruct()->ascent + menu.bevel_w, | 516 | m_screen->getMenuStyle()->titlefont.getFontStruct()->ascent + menu.bevel_w, |
513 | text, len); | 517 | text, len); |
514 | } | 518 | } |
515 | 519 | ||
@@ -654,14 +658,14 @@ void Basemenu::drawItem(unsigned int index, bool highlight, bool clear, | |||
654 | I18n *i18n = I18n::instance(); | 658 | I18n *i18n = I18n::instance(); |
655 | 659 | ||
656 | if (text) { | 660 | if (text) { |
657 | text_w = m_screen->getMenuStyle()->framefont->getTextWidth(text, len); | 661 | text_w = m_screen->getMenuStyle()->framefont.getTextWidth(text, len); |
658 | 662 | ||
659 | if (m_screen->getMenuStyle()->framefont->multibyte()) { | 663 | if (m_screen->getMenuStyle()->framefont.multibyte()) { |
660 | text_y = item_y + (menu.bevel_w / 2) - | 664 | text_y = item_y + (menu.bevel_w / 2) - |
661 | m_screen->getMenuStyle()->framefont->getFontSetExtents()->max_ink_extent.y; | 665 | m_screen->getMenuStyle()->framefont.getFontSetExtents()->max_ink_extent.y; |
662 | } else { | 666 | } else { |
663 | text_y = item_y + | 667 | text_y = item_y + |
664 | m_screen->getMenuStyle()->framefont->getFontStruct()->ascent + | 668 | m_screen->getMenuStyle()->framefont.getFontStruct()->ascent + |
665 | (menu.bevel_w / 2); | 669 | (menu.bevel_w / 2); |
666 | } | 670 | } |
667 | 671 | ||
@@ -753,7 +757,7 @@ void Basemenu::drawItem(unsigned int index, bool highlight, bool clear, | |||
753 | 757 | ||
754 | if (dotext && text) { | 758 | if (dotext && text) { |
755 | if (i18n->multibyte()) { | 759 | if (i18n->multibyte()) { |
756 | XmbDrawString(m_display, menu.frame, m_screen->getMenuStyle()->framefont->getFontSet(), | 760 | XmbDrawString(m_display, menu.frame, m_screen->getMenuStyle()->framefont.getFontSet(), |
757 | tgc, text_x, text_y, text, len); | 761 | tgc, text_x, text_y, text, len); |
758 | } else | 762 | } else |
759 | XDrawString(m_display, menu.frame, tgc, text_x, text_y, text, len); | 763 | XDrawString(m_display, menu.frame, tgc, text_x, text_y, text, len); |
diff --git a/src/Theme.cc b/src/Theme.cc index 71a1b68..d0674f5 100644 --- a/src/Theme.cc +++ b/src/Theme.cc | |||
@@ -41,7 +41,7 @@ | |||
41 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 41 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
42 | // DEALINGS IN THE SOFTWARE. | 42 | // DEALINGS IN THE SOFTWARE. |
43 | 43 | ||
44 | // $Id: Theme.cc,v 1.20 2002/04/20 10:33:10 fluxgen Exp $ | 44 | // $Id: Theme.cc,v 1.21 2002/05/15 09:35:49 fluxgen Exp $ |
45 | 45 | ||
46 | #ifndef _GNU_SOURCE | 46 | #ifndef _GNU_SOURCE |
47 | #define _GNU_SOURCE | 47 | #define _GNU_SOURCE |
@@ -71,6 +71,7 @@ using namespace std; | |||
71 | 71 | ||
72 | Theme::Theme(Display *display, Window rootwindow, Colormap colormap, | 72 | Theme::Theme(Display *display, Window rootwindow, Colormap colormap, |
73 | int screennum, BImageControl *ic, const char *filename, const char *rootcommand): | 73 | int screennum, BImageControl *ic, const char *filename, const char *rootcommand): |
74 | m_menustyle(display), | ||
74 | m_imagecontrol(ic), | 75 | m_imagecontrol(ic), |
75 | m_display(display), | 76 | m_display(display), |
76 | m_colormap(colormap), | 77 | m_colormap(colormap), |
@@ -81,8 +82,7 @@ m_rootcommand(rootcommand==0 ? "" : rootcommand) //we dont want to send 0-pointe | |||
81 | cerr<<__FILE__<<"("<<__LINE__<<"): Creating."<<endl; | 82 | cerr<<__FILE__<<"("<<__LINE__<<"): Creating."<<endl; |
82 | #endif //DEBUG | 83 | #endif //DEBUG |
83 | //default settings | 84 | //default settings |
84 | m_menustyle.titlefont = new FbTk::Font(m_display, "fixed"); //create with default font | 85 | |
85 | m_menustyle.framefont = new FbTk::Font(m_display, "fixed"); | ||
86 | m_windowstyle.font.set = m_toolbarstyle.font.set = m_windowstyle.tab.font.set = 0; | 86 | m_windowstyle.font.set = m_toolbarstyle.font.set = m_windowstyle.tab.font.set = 0; |
87 | 87 | ||
88 | m_toolbarstyle.font.fontstruct = m_windowstyle.font.fontstruct = m_windowstyle.tab.font.fontstruct = 0; | 88 | m_toolbarstyle.font.fontstruct = m_windowstyle.font.fontstruct = m_windowstyle.tab.font.fontstruct = 0; |
@@ -147,15 +147,15 @@ m_rootcommand(rootcommand==0 ? "" : rootcommand) //we dont want to send 0-pointe | |||
147 | GCForeground, &gcv); | 147 | GCForeground, &gcv); |
148 | 148 | ||
149 | gcv.foreground = m_menustyle.t_text.getPixel(); | 149 | gcv.foreground = m_menustyle.t_text.getPixel(); |
150 | if (m_menustyle.titlefont->getFontStruct()) | 150 | if (m_menustyle.titlefont.getFontStruct()) |
151 | gcv.font = m_menustyle.titlefont->getFontStruct()->fid; | 151 | gcv.font = m_menustyle.titlefont.getFontStruct()->fid; |
152 | m_menustyle.t_text_gc = | 152 | m_menustyle.t_text_gc = |
153 | XCreateGC(m_display, rootwindow, | 153 | XCreateGC(m_display, rootwindow, |
154 | gc_value_mask, &gcv); | 154 | gc_value_mask, &gcv); |
155 | 155 | ||
156 | gcv.foreground = m_menustyle.f_text.getPixel(); | 156 | gcv.foreground = m_menustyle.f_text.getPixel(); |
157 | if (m_menustyle.framefont->getFontStruct()) | 157 | if (m_menustyle.framefont.getFontStruct()) |
158 | gcv.font = m_menustyle.framefont->getFontStruct()->fid; | 158 | gcv.font = m_menustyle.framefont.getFontStruct()->fid; |
159 | 159 | ||
160 | m_menustyle.f_text_gc = | 160 | m_menustyle.f_text_gc = |
161 | XCreateGC(m_display, rootwindow, | 161 | XCreateGC(m_display, rootwindow, |
@@ -213,10 +213,6 @@ Theme::~Theme() { | |||
213 | // should only be called from ~Theme | 213 | // should only be called from ~Theme |
214 | //-------------------- | 214 | //-------------------- |
215 | void Theme::freeMenuStyle() { | 215 | void Theme::freeMenuStyle() { |
216 | delete m_menustyle.framefont; | ||
217 | m_menustyle.framefont = 0; | ||
218 | delete m_menustyle.titlefont; | ||
219 | m_menustyle.titlefont = 0; | ||
220 | 216 | ||
221 | XFreeGC(m_display, m_menustyle.t_text_gc); | 217 | XFreeGC(m_display, m_menustyle.t_text_gc); |
222 | XFreeGC(m_display, m_menustyle.f_text_gc); | 218 | XFreeGC(m_display, m_menustyle.f_text_gc); |
@@ -300,8 +296,6 @@ void Theme::load(const char *filename){ | |||
300 | } | 296 | } |
301 | 297 | ||
302 | void Theme::loadMenuStyle() { | 298 | void Theme::loadMenuStyle() { |
303 | if (m_menustyle.titlefont==0) | ||
304 | m_menustyle.titlefont = new FbTk::Font(m_display); | ||
305 | 299 | ||
306 | readDatabaseTexture("menu.title", "Menu.Title", | 300 | readDatabaseTexture("menu.title", "Menu.Title", |
307 | &m_menustyle.title, | 301 | &m_menustyle.title, |
@@ -381,30 +375,8 @@ void Theme::loadMenuStyle() { | |||
381 | m_menustyle.bullet_pos = Basemenu::LEFT; | 375 | m_menustyle.bullet_pos = Basemenu::LEFT; |
382 | 376 | ||
383 | //---------- font | 377 | //---------- font |
384 | m_menustyle.framefont->loadFromDatabase(m_database, "menu.frame.font", "Menu.Frame.Font"); | 378 | m_menustyle.framefont.loadFromDatabase(m_database, "menu.frame.font", "Menu.Frame.Font"); |
385 | m_menustyle.titlefont->loadFromDatabase(m_database, "menu.title.font", "Menu.Title.Font"); | 379 | m_menustyle.titlefont.loadFromDatabase(m_database, "menu.title.font", "Menu.Title.Font"); |
386 | /* | ||
387 | if (I18n::instance()->multibyte()) { | ||
388 | |||
389 | readDatabaseFontSet("menu.title.font", "Menu.Title.Font", | ||
390 | &m_menustyle.titlefont.set); | ||
391 | readDatabaseFontSet("menu.frame.font", "Menu.Frame.Font", | ||
392 | &m_menustyle.framefont.set); | ||
393 | |||
394 | m_menustyle.titlefont.set_extents = | ||
395 | XExtentsOfFontSet(m_menustyle.titlefont.set); | ||
396 | m_menustyle.framefont.set_extents = | ||
397 | XExtentsOfFontSet(m_menustyle.framefont.set); | ||
398 | |||
399 | |||
400 | } else { | ||
401 | |||
402 | readDatabaseFont("menu.title.font", "Menu.Title.Font", | ||
403 | &m_menustyle.titlefont.fontstruct); | ||
404 | |||
405 | readDatabaseFont("menu.frame.font", "Menu.Frame.Font", | ||
406 | &m_menustyle.framefont.fontstruct); | ||
407 | }*/ | ||
408 | 380 | ||
409 | } | 381 | } |
410 | 382 | ||
@@ -990,14 +962,14 @@ void Theme::reconfigure() { | |||
990 | GCForeground, &gcv); | 962 | GCForeground, &gcv); |
991 | 963 | ||
992 | gcv.foreground = m_menustyle.t_text.getPixel(); | 964 | gcv.foreground = m_menustyle.t_text.getPixel(); |
993 | if (m_menustyle.titlefont->getFontStruct()) | 965 | if (m_menustyle.titlefont.getFontStruct()) |
994 | gcv.font = m_menustyle.titlefont->getFontStruct()->fid; | 966 | gcv.font = m_menustyle.titlefont.getFontStruct()->fid; |
995 | XChangeGC(m_display, m_menustyle.t_text_gc, | 967 | XChangeGC(m_display, m_menustyle.t_text_gc, |
996 | gc_value_mask, &gcv); | 968 | gc_value_mask, &gcv); |
997 | 969 | ||
998 | gcv.foreground = m_menustyle.f_text.getPixel(); | 970 | gcv.foreground = m_menustyle.f_text.getPixel(); |
999 | if (m_menustyle.framefont->getFontStruct()) | 971 | if (m_menustyle.framefont.getFontStruct()) |
1000 | gcv.font = m_menustyle.framefont->getFontStruct()->fid; | 972 | gcv.font = m_menustyle.framefont.getFontStruct()->fid; |
1001 | 973 | ||
1002 | XChangeGC(m_display, m_menustyle.f_text_gc, | 974 | XChangeGC(m_display, m_menustyle.f_text_gc, |
1003 | gc_value_mask, &gcv); | 975 | gc_value_mask, &gcv); |
diff --git a/src/Theme.hh b/src/Theme.hh index c197469..1401716 100644 --- a/src/Theme.hh +++ b/src/Theme.hh | |||
@@ -42,7 +42,7 @@ | |||
42 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 42 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
43 | // DEALINGS IN THE SOFTWARE. | 43 | // DEALINGS IN THE SOFTWARE. |
44 | 44 | ||
45 | // $Id: Theme.hh,v 1.8 2002/05/07 15:22:07 fluxgen Exp $ | 45 | // $Id: Theme.hh,v 1.9 2002/05/15 09:35:49 fluxgen Exp $ |
46 | 46 | ||
47 | #ifndef THEME_HH | 47 | #ifndef THEME_HH |
48 | #define THEME_HH | 48 | #define THEME_HH |
@@ -66,10 +66,12 @@ public: | |||
66 | 66 | ||
67 | 67 | ||
68 | typedef struct MenuStyle { | 68 | typedef struct MenuStyle { |
69 | MenuStyle(Display *display):titlefont(display, "fixed"), | ||
70 | framefont(display, "fixed") { } | ||
69 | BColor t_text, f_text, h_text, d_text; | 71 | BColor t_text, f_text, h_text, d_text; |
70 | BTexture title, frame, hilite; | 72 | BTexture title, frame, hilite; |
71 | GC t_text_gc, f_text_gc, h_text_gc, d_text_gc, hilite_gc; | 73 | GC t_text_gc, f_text_gc, h_text_gc, d_text_gc, hilite_gc; |
72 | FbTk::Font *titlefont, *framefont; | 74 | FbTk::Font titlefont, framefont; |
73 | DrawUtil::Font::FontJustify framefont_justify; | 75 | DrawUtil::Font::FontJustify framefont_justify; |
74 | DrawUtil::Font::FontJustify titlefont_justify; | 76 | DrawUtil::Font::FontJustify titlefont_justify; |
75 | int bullet, bullet_pos; | 77 | int bullet, bullet_pos; |