diff options
author | simonb <simonb> | 2006-03-22 12:23:17 (GMT) |
---|---|---|
committer | simonb <simonb> | 2006-03-22 12:23:17 (GMT) |
commit | fe4a7db228d69bc9a66ed948f218ef489b2cedaf (patch) | |
tree | 5ee59c4862b04871dbd6f5112278682e4b005e47 /src/Container.cc | |
parent | da365bb4c99edf1a18e1f8db285f8c2dcee2c5e3 (diff) | |
download | fluxbox_pavel-fe4a7db228d69bc9a66ed948f218ef489b2cedaf.zip fluxbox_pavel-fe4a7db228d69bc9a66ed948f218ef489b2cedaf.tar.bz2 |
external tabs features and bugfixes
Diffstat (limited to 'src/Container.cc')
-rw-r--r-- | src/Container.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/Container.cc b/src/Container.cc index 9cef92c..76d8d52 100644 --- a/src/Container.cc +++ b/src/Container.cc | |||
@@ -264,10 +264,16 @@ void Container::setMaxSizePerClient(unsigned int size) { | |||
264 | } | 264 | } |
265 | 265 | ||
266 | void Container::setMaxTotalSize(unsigned int size) { | 266 | void Container::setMaxTotalSize(unsigned int size) { |
267 | if (m_max_total_size == size) | ||
268 | return; | ||
269 | |||
270 | unsigned int old = m_max_total_size; | ||
267 | m_max_total_size = size; | 271 | m_max_total_size = size; |
268 | 272 | ||
269 | if (m_max_total_size && width() > m_max_total_size) { | 273 | if (m_max_total_size && width() > m_max_total_size) { |
270 | resize(m_max_total_size, height()); | 274 | resize(m_max_total_size, height()); |
275 | } else if (!m_max_total_size && old) { // going from restricted to unrestricted | ||
276 | repositionItems(); | ||
271 | } else { | 277 | } else { |
272 | // this is a bit of duplication from repositionItems | 278 | // this is a bit of duplication from repositionItems |
273 | // for when we are allowed to grow ourself | 279 | // for when we are allowed to grow ourself |
@@ -286,7 +292,6 @@ void Container::setMaxTotalSize(unsigned int size) { | |||
286 | if (preferred_width != width()) | 292 | if (preferred_width != width()) |
287 | repositionItems(); | 293 | repositionItems(); |
288 | } | 294 | } |
289 | |||
290 | } | 295 | } |
291 | } | 296 | } |
292 | 297 | ||
@@ -381,7 +386,10 @@ void Container::repositionItems() { | |||
381 | } | 386 | } |
382 | if (total_width != width()) { | 387 | if (total_width != width()) { |
383 | // calling Container::resize here risks infinite loops | 388 | // calling Container::resize here risks infinite loops |
384 | FbTk::FbWindow::resize(total_width, height()); | 389 | if (align == RIGHT) |
390 | FbTk::FbWindow::moveResize(x() - (total_width - width()), y(), total_width, height()); | ||
391 | else | ||
392 | FbTk::FbWindow::resize(total_width, height()); | ||
385 | } | 393 | } |
386 | } | 394 | } |
387 | 395 | ||
@@ -396,7 +404,7 @@ void Container::repositionItems() { | |||
396 | int direction = 1; | 404 | int direction = 1; |
397 | if (align == RIGHT) { | 405 | if (align == RIGHT) { |
398 | direction = -1; | 406 | direction = -1; |
399 | next_x = total_width - max_width_per_client + borderW; | 407 | next_x = total_width - max_width_per_client - borderW; |
400 | } | 408 | } |
401 | 409 | ||
402 | for (; it != it_end; ++it, next_x += direction*(max_width_per_client + borderW + extra)) { | 410 | for (; it != it_end; ++it, next_x += direction*(max_width_per_client + borderW + extra)) { |