rumai 4.1.0 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rumai/inochi.rb +1 -1
- data/lib/rumai/wm.rb +36 -25
- data/man/man1/rumai.1 +5 -2
- metadata +1 -1
data/lib/rumai/inochi.rb
CHANGED
data/lib/rumai/wm.rb
CHANGED
@@ -878,15 +878,8 @@ module Rumai
|
|
878
878
|
#
|
879
879
|
def each_column starting_column_id = 1
|
880
880
|
i = starting_column_id
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
if a.exist?
|
885
|
-
yield a
|
886
|
-
else
|
887
|
-
break
|
888
|
-
end
|
889
|
-
|
881
|
+
while (column = Area.new(i, self)).exist?
|
882
|
+
yield column
|
890
883
|
i += 1
|
891
884
|
end
|
892
885
|
end
|
@@ -916,8 +909,8 @@ module Rumai
|
|
916
909
|
# its peak on the left side of the screen.
|
917
910
|
#
|
918
911
|
def tile_rightward
|
919
|
-
|
920
|
-
heights = (1
|
912
|
+
num_rising_columns, num_summit_clients = calculate_right_triangle
|
913
|
+
heights = (1..num_rising_columns).to_a.push(num_summit_clients)
|
921
914
|
arrange_columns heights, :default
|
922
915
|
end
|
923
916
|
|
@@ -940,8 +933,8 @@ module Rumai
|
|
940
933
|
# its peak on the right side of the screen.
|
941
934
|
#
|
942
935
|
def tile_leftward
|
943
|
-
|
944
|
-
heights = (1
|
936
|
+
num_rising_columns, num_summit_clients = calculate_right_triangle
|
937
|
+
heights = (1..num_rising_columns).to_a.push(num_summit_clients).reverse
|
945
938
|
arrange_columns heights, :default
|
946
939
|
end
|
947
940
|
|
@@ -954,7 +947,23 @@ module Rumai
|
|
954
947
|
# sides of the screen and their peaks meeting in the middle of the screen.
|
955
948
|
#
|
956
949
|
def tile_inward
|
957
|
-
|
950
|
+
rising, num_summit_clients, falling = calculate_equilateral_triangle
|
951
|
+
|
952
|
+
# distribute extra clients in the middle
|
953
|
+
summit =
|
954
|
+
if num_summit_clients <= rising.length
|
955
|
+
# try to minimize the number of columns created in the middle by
|
956
|
+
# putting all summit clients in a single column--if they can fit
|
957
|
+
[num_summit_clients]
|
958
|
+
else
|
959
|
+
# no choice but to divide the summit clients into multiple columns
|
960
|
+
split = num_summit_clients / 2
|
961
|
+
carry = num_summit_clients % 2
|
962
|
+
[split, carry, split]
|
963
|
+
end.
|
964
|
+
reject(&:zero?)
|
965
|
+
|
966
|
+
arrange_columns rising + summit + falling, :default
|
958
967
|
end
|
959
968
|
|
960
969
|
##
|
@@ -967,14 +976,14 @@ module Rumai
|
|
967
976
|
# sides of the screen.
|
968
977
|
#
|
969
978
|
def tile_outward
|
970
|
-
rising,
|
971
|
-
heights = falling[
|
979
|
+
rising, num_summit_clients, falling = calculate_equilateral_triangle
|
980
|
+
heights = falling + rising[1..-1]
|
972
981
|
|
973
982
|
# distribute extra clients on the outsides
|
974
|
-
|
975
|
-
if
|
976
|
-
split =
|
977
|
-
carry =
|
983
|
+
num_summit_clients += rising[0].to_i
|
984
|
+
if num_summit_clients > 0
|
985
|
+
split = num_summit_clients / 2
|
986
|
+
carry = num_summit_clients % 2
|
978
987
|
# put the remainder on the left side to minimize the need for
|
979
988
|
# rearrangement when clients are removed or added to the view
|
980
989
|
heights.unshift split + carry
|
@@ -1029,8 +1038,8 @@ module Rumai
|
|
1029
1038
|
# the given layout is applied to all columns, if specified.
|
1030
1039
|
#
|
1031
1040
|
def arrange_columns lengths, layout = nil
|
1032
|
-
i = 0
|
1033
1041
|
maintain_focus do
|
1042
|
+
i = 0
|
1034
1043
|
each_column do |column|
|
1035
1044
|
if i < lengths.length
|
1036
1045
|
column.length = lengths[i]
|
@@ -1050,13 +1059,15 @@ module Rumai
|
|
1050
1059
|
return [] unless num_clients > 1
|
1051
1060
|
|
1052
1061
|
# calculate the dimensions of the rising sub-triangle
|
1053
|
-
num_rising_columns,
|
1062
|
+
num_rising_columns, num_rising_summit_clients =
|
1054
1063
|
calculate_right_triangle(num_clients / 2)
|
1055
1064
|
|
1065
|
+
num_summit_clients =
|
1066
|
+
(num_rising_summit_clients * 2) + (num_clients % 2)
|
1067
|
+
|
1056
1068
|
# quantify entire triangle as a sequence of heights
|
1057
|
-
|
1058
|
-
|
1059
|
-
[heights, summit, heights.reverse]
|
1069
|
+
rising = (1 .. num_rising_columns).to_a
|
1070
|
+
[rising, num_summit_clients, rising.reverse]
|
1060
1071
|
end
|
1061
1072
|
|
1062
1073
|
def calculate_right_triangle num_rising_clients = num_managed_clients
|
data/man/man1/rumai.1
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
|
5
5
|
.\" Date: 2011-03-28
|
6
6
|
.\" Manual: \ \&
|
7
|
-
.\" Source: \ \& 4.1.
|
7
|
+
.\" Source: \ \& 4.1.1
|
8
8
|
.\" Language: English
|
9
9
|
.\"
|
10
|
-
.TH "RUMAI" "1" "2011\-03\-28" "\ \& 4\&.1\&.
|
10
|
+
.TH "RUMAI" "1" "2011\-03\-28" "\ \& 4\&.1\&.1" "\ \&"
|
11
11
|
.\" -----------------------------------------------------------------
|
12
12
|
.\" * Define some portability stuff
|
13
13
|
.\" -----------------------------------------------------------------
|
@@ -856,6 +856,9 @@ Its exit status will indicate whether all tests have passed\&. It may also print
|
|
856
856
|
.sp
|
857
857
|
\m[blue]\fBFork this project on GitHub\fR\m[] and send a pull request\&.
|
858
858
|
.SH "HISTORY"
|
859
|
+
.SS "Version 4\&.1\&.1 (2011\-03\-28)"
|
860
|
+
.sp
|
861
|
+
This release fixes bugs in the inward & outward automated client arrangements\&.
|
859
862
|
.SS "Version 4\&.1\&.0 (2011\-03\-28)"
|
860
863
|
.sp
|
861
864
|
This release adds new automated client arrangements and cleans up the code\&.
|