diff options
Diffstat (limited to 'src/Toolbar.cc')
-rw-r--r-- | src/Toolbar.cc | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 7dd4c58..15efb99 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.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: Toolbar.cc,v 1.138 2004/01/21 13:36:09 fluxgen Exp $ | 25 | // $Id: Toolbar.cc,v 1.139 2004/04/26 15:04:37 rathnor Exp $ |
26 | 26 | ||
27 | #include "Toolbar.hh" | 27 | #include "Toolbar.hh" |
28 | 28 | ||
@@ -876,9 +876,24 @@ void Toolbar::rearrangeItems() { | |||
876 | int fixed_width = 0; // combined size of all fixed items | 876 | int fixed_width = 0; // combined size of all fixed items |
877 | int fixed_items = 0; // number of fixed items | 877 | int fixed_items = 0; // number of fixed items |
878 | int relative_items = 0; | 878 | int relative_items = 0; |
879 | int last_bw = 0; // we show the largest border of adjoining items | ||
880 | bool first = true; | ||
879 | for (; item_it != item_it_end; ++item_it) { | 881 | for (; item_it != item_it_end; ++item_it) { |
882 | if (!(*item_it)->active()) | ||
883 | continue; | ||
884 | |||
885 | if (!first) { | ||
886 | if ((*item_it)->borderWidth() > last_bw) | ||
887 | fixed_width += (*item_it)->borderWidth(); | ||
888 | else | ||
889 | fixed_width += last_bw; | ||
890 | } else | ||
891 | first = false; | ||
892 | |||
893 | last_bw = (*item_it)->borderWidth(); | ||
894 | |||
880 | if ((*item_it)->type() == ToolbarItem::FIXED && (*item_it)->active()) { | 895 | if ((*item_it)->type() == ToolbarItem::FIXED && (*item_it)->active()) { |
881 | fixed_width += (*item_it)->width() + (*item_it)->borderWidth()*2; | 896 | fixed_width += (*item_it)->width(); |
882 | fixed_items++; | 897 | fixed_items++; |
883 | } else if ((*item_it)->type() == ToolbarItem::RELATIVE && (*item_it)->active()) { | 898 | } else if ((*item_it)->type() == ToolbarItem::RELATIVE && (*item_it)->active()) { |
884 | relative_items++; | 899 | relative_items++; |
@@ -899,14 +914,22 @@ void Toolbar::rearrangeItems() { | |||
899 | } | 914 | } |
900 | } | 915 | } |
901 | // now move and resize the items | 916 | // now move and resize the items |
902 | int next_x = 0; | 917 | // borderWidth added back on straight away |
918 | int next_x = -2*m_item_list.front()->borderWidth(); // list isn't empty | ||
919 | last_bw = 0; | ||
903 | for (item_it = m_item_list.begin(); item_it != item_it_end; ++item_it) { | 920 | for (item_it = m_item_list.begin(); item_it != item_it_end; ++item_it) { |
904 | if (!(*item_it)->active()) { | 921 | if (!(*item_it)->active()) { |
905 | (*item_it)->hide(); | 922 | (*item_it)->hide(); |
906 | continue; | 923 | continue; |
907 | } | 924 | } |
908 | |||
909 | int borderW = (*item_it)->borderWidth(); | 925 | int borderW = (*item_it)->borderWidth(); |
926 | |||
927 | if (borderW > last_bw) | ||
928 | next_x += borderW; | ||
929 | else | ||
930 | next_x += last_bw; | ||
931 | last_bw = borderW; | ||
932 | |||
910 | (*item_it)->show(); | 933 | (*item_it)->show(); |
911 | if ((*item_it)->type() == ToolbarItem::RELATIVE) { | 934 | if ((*item_it)->type() == ToolbarItem::RELATIVE) { |
912 | int extra = 0; | 935 | int extra = 0; |
@@ -915,12 +938,12 @@ void Toolbar::rearrangeItems() { | |||
915 | --rounding_error; | 938 | --rounding_error; |
916 | } | 939 | } |
917 | 940 | ||
918 | (*item_it)->moveResize(next_x, -borderW, extra + relative_width-2*borderW, height()); | 941 | (*item_it)->moveResize(next_x, -borderW, extra + relative_width, height()); |
919 | } else { // fixed size | 942 | } else { // fixed size |
920 | (*item_it)->moveResize(next_x, -borderW, | 943 | (*item_it)->moveResize(next_x, -borderW, |
921 | (*item_it)->width(), height()); | 944 | (*item_it)->width(), height()); |
922 | } | 945 | } |
923 | next_x += (*item_it)->width() + borderW*2; | 946 | next_x += (*item_it)->width(); |
924 | } | 947 | } |
925 | // unlock | 948 | // unlock |
926 | m_resize_lock = false; | 949 | m_resize_lock = false; |