diff options
author | fluxgen <fluxgen> | 2002-11-12 22:04:16 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2002-11-12 22:04:16 (GMT) |
commit | 2446ed4861be407a198ac301e7af8117e1a742ae (patch) | |
tree | 7d5618c96d787d458a375cbfee55f5695bf88d78 | |
parent | 4897fc22888c52ba28af48e9bc57465a86ea3d2e (diff) | |
download | fluxbox-2446ed4861be407a198ac301e7af8117e1a742ae.zip fluxbox-2446ed4861be407a198ac301e7af8117e1a742ae.tar.bz2 |
restored label alignment
-rw-r--r-- | src/Window.cc | 56 |
1 files changed, 39 insertions, 17 deletions
diff --git a/src/Window.cc b/src/Window.cc index 38ac8eb..0d99738 100644 --- a/src/Window.cc +++ b/src/Window.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: Window.cc,v 1.97 2002/11/12 14:54:45 rathnor Exp $ | 25 | // $Id: Window.cc,v 1.98 2002/11/12 22:04:16 fluxgen Exp $ |
26 | 26 | ||
27 | #include "Window.hh" | 27 | #include "Window.hh" |
28 | 28 | ||
@@ -225,12 +225,12 @@ tab(0) { | |||
225 | setGravityOffsets(); | 225 | setGravityOffsets(); |
226 | 226 | ||
227 | if (! fluxbox->isStartup()) { | 227 | if (! fluxbox->isStartup()) { |
228 | #ifdef XINERAMA | 228 | #ifdef XINERAMA |
229 | unsigned int head = 0; | 229 | unsigned int head = 0; |
230 | if (screen->hasXinerama()) { | 230 | if (screen->hasXinerama()) { |
231 | head = screen->getHead(frame.x, frame.y); | 231 | head = screen->getHead(frame.x, frame.y); |
232 | } | 232 | } |
233 | #endif // XINERAMA | 233 | #endif // XINERAMA |
234 | 234 | ||
235 | int real_x = frame.x; | 235 | int real_x = frame.x; |
236 | int real_y = frame.y; | 236 | int real_y = frame.y; |
@@ -245,7 +245,7 @@ tab(0) { | |||
245 | } | 245 | } |
246 | } | 246 | } |
247 | 247 | ||
248 | #ifdef XINERAMA | 248 | #ifdef XINERAMA |
249 | // check is within the current head, so it won't overlap heads | 249 | // check is within the current head, so it won't overlap heads |
250 | if (real_x >= screen->getHeadX(head) && | 250 | if (real_x >= screen->getHeadX(head) && |
251 | real_y + frame.y_border >= screen->getHeadY(head) && | 251 | real_y + frame.y_border >= screen->getHeadY(head) && |
@@ -254,13 +254,13 @@ tab(0) { | |||
254 | (real_y + frame.height) <= | 254 | (real_y + frame.height) <= |
255 | (screen->getHeadY(head) + screen->getHeadHeight(head)) ) | 255 | (screen->getHeadY(head) + screen->getHeadHeight(head)) ) |
256 | place_window = false; | 256 | place_window = false; |
257 | #else // !XINERAMA | 257 | #else // !XINERAMA |
258 | if (real_x >= 0 && | 258 | if (real_x >= 0 && |
259 | real_y + frame.y_border >= 0 && | 259 | real_y + frame.y_border >= 0 && |
260 | real_x <= (signed) screen->getWidth() && | 260 | real_x <= (signed) screen->getWidth() && |
261 | real_y <= (signed) screen->getHeight()) | 261 | real_y <= (signed) screen->getHeight()) |
262 | place_window = false; | 262 | place_window = false; |
263 | #endif // XIENRAMA | 263 | #endif // XIENRAMA |
264 | 264 | ||
265 | } else | 265 | } else |
266 | place_window = false; | 266 | place_window = false; |
@@ -1168,7 +1168,7 @@ void FluxboxWindow::getWMHints() { | |||
1168 | } else { | 1168 | } else { |
1169 | client.wm_hint_flags = wmhint->flags; | 1169 | client.wm_hint_flags = wmhint->flags; |
1170 | if (wmhint->flags & InputHint) { | 1170 | if (wmhint->flags & InputHint) { |
1171 | if (wmhint->input == true) { | 1171 | if (wmhint->input) { |
1172 | if (send_focus_message) | 1172 | if (send_focus_message) |
1173 | focus_mode = F_LOCALLYACTIVE; | 1173 | focus_mode = F_LOCALLYACTIVE; |
1174 | else | 1174 | else |
@@ -1504,6 +1504,7 @@ bool FluxboxWindow::setInputFocus() { | |||
1504 | } else { | 1504 | } else { |
1505 | return false; | 1505 | return false; |
1506 | } | 1506 | } |
1507 | |||
1507 | Fluxbox *fb = Fluxbox::instance(); | 1508 | Fluxbox *fb = Fluxbox::instance(); |
1508 | fb->setFocusedWindow(this); | 1509 | fb->setFocusedWindow(this); |
1509 | 1510 | ||
@@ -2423,12 +2424,32 @@ void FluxboxWindow::redrawLabel() { | |||
2423 | if (getTitle().size() != 0) { | 2424 | if (getTitle().size() != 0) { |
2424 | GC gc = ((focused) ? screen->getWindowStyle()->l_text_focus_gc : | 2425 | GC gc = ((focused) ? screen->getWindowStyle()->l_text_focus_gc : |
2425 | screen->getWindowStyle()->l_text_unfocus_gc); | 2426 | screen->getWindowStyle()->l_text_unfocus_gc); |
2426 | screen->getWindowStyle()->font.drawText( | 2427 | unsigned int l = client.title_text_w; |
2428 | int dlen = getTitle().size(); | ||
2429 | int dx = frame.bevel_w; | ||
2430 | FbTk::Font &font = screen->getWindowStyle()->font; | ||
2431 | if (l > frame.label_w) { | ||
2432 | for (; dlen >= 0; dlen--) { | ||
2433 | l = font.textWidth(getTitle().c_str(), dlen) + frame.bevel_w*4; | ||
2434 | if (l < frame.label_w) | ||
2435 | break; | ||
2436 | } | ||
2437 | } | ||
2438 | switch (screen->getWindowStyle()->justify) { | ||
2439 | case DrawUtil::Font::RIGHT: | ||
2440 | dx += frame.label_w - l; | ||
2441 | break; | ||
2442 | case DrawUtil::Font::CENTER: | ||
2443 | dx += (frame.label_w - l)/2; | ||
2444 | break; | ||
2445 | } | ||
2446 | |||
2447 | font.drawText( | ||
2427 | frame.label, | 2448 | frame.label, |
2428 | screen->getScreenNumber(), | 2449 | screen->getScreenNumber(), |
2429 | gc, | 2450 | gc, |
2430 | getTitle().c_str(), getTitle().size(), | 2451 | getTitle().c_str(), getTitle().size(), |
2431 | frame.bevel_w, frame.bevel_w/2 + screen->getWindowStyle()->font.ascent()); | 2452 | dx, screen->getWindowStyle()->font.ascent() + 1); |
2432 | } | 2453 | } |
2433 | } | 2454 | } |
2434 | 2455 | ||
@@ -2441,15 +2462,16 @@ void FluxboxWindow::redrawAllButtons() { | |||
2441 | } | 2462 | } |
2442 | 2463 | ||
2443 | void FluxboxWindow::mapRequestEvent(XMapRequestEvent *re) { | 2464 | void FluxboxWindow::mapRequestEvent(XMapRequestEvent *re) { |
2444 | if (re->window != client.window) | ||
2445 | return; | ||
2446 | #ifdef DEBUG | 2465 | #ifdef DEBUG |
2447 | fprintf(stderr, | 2466 | fprintf(stderr, |
2448 | I18n::instance()->getMessage( | 2467 | I18n::instance()->getMessage( |
2449 | FBNLS::WindowSet, FBNLS::WindowMapRequest, | 2468 | FBNLS::WindowSet, FBNLS::WindowMapRequest, |
2450 | "FluxboxWindow::mapRequestEvent() for 0x%lx\n"), | 2469 | "FluxboxWindow::mapRequestEvent() for 0x%lx\n"), |
2451 | client.window); | 2470 | client.window); |
2452 | #endif // DEBUG | 2471 | #endif // DEBUG |
2472 | if (re->window != client.window) | ||
2473 | return; | ||
2474 | |||
2453 | Fluxbox *fluxbox = Fluxbox::instance(); | 2475 | Fluxbox *fluxbox = Fluxbox::instance(); |
2454 | fluxbox->grab(); | 2476 | fluxbox->grab(); |
2455 | if (! validateClient()) | 2477 | if (! validateClient()) |
@@ -2787,7 +2809,7 @@ void FluxboxWindow::buttonPressEvent(XButtonEvent *be) { | |||
2787 | if (be->window == buttonlist[i].win && buttonlist[i].draw) | 2809 | if (be->window == buttonlist[i].win && buttonlist[i].draw) |
2788 | buttonlist[i].draw(this, be->window, true); | 2810 | buttonlist[i].draw(this, be->window, true); |
2789 | } | 2811 | } |
2790 | 2812 | ||
2791 | if (frame.plate == be->window) { | 2813 | if (frame.plate == be->window) { |
2792 | 2814 | ||
2793 | if (m_windowmenu.get() && m_windowmenu->isVisible()) //hide menu if its visible | 2815 | if (m_windowmenu.get() && m_windowmenu->isVisible()) //hide menu if its visible |