summaryrefslogtreecommitdiff
path: root/src/FbTk/Layer.hh
diff options
context:
space:
mode:
authorJim Ramsay <i.am@jimramsay.com>2009-10-14 01:05:49 (GMT)
committerJim Ramsay <i.am@jimramsay.com>2009-10-14 01:05:49 (GMT)
commit839ea523164caecd8c779e60539b78c2a748a81f (patch)
tree0019d04f27a1a258bc7a900e3cf77b916dca6493 /src/FbTk/Layer.hh
parent4d3aa646c1d1d1de4fdb31f938f6ea62fd5dd21e (diff)
parent8def80cec337a986b762cdbb5e2555c6da809353 (diff)
downloadfluxbox_lack-testing/argb.zip
fluxbox_lack-testing/argb.tar.bz2
Merge branch 'master' into argbtesting/argbargb
Conflicts: src/FbTk/FbWindow.cc
Diffstat (limited to 'src/FbTk/Layer.hh')
-rw-r--r--src/FbTk/Layer.hh29
1 files changed, 7 insertions, 22 deletions
diff --git a/src/FbTk/Layer.hh b/src/FbTk/Layer.hh
index b9257c3..5836c9c 100644
--- a/src/FbTk/Layer.hh
+++ b/src/FbTk/Layer.hh
@@ -29,12 +29,12 @@
29namespace FbTk { 29namespace FbTk {
30 30
31template <typename ItemType, typename Container = std::vector<ItemType *> > 31template <typename ItemType, typename Container = std::vector<ItemType *> >
32class Layer { 32class LayerBase {
33public: 33public:
34 typedef Container ListType; 34 typedef Container ListType;
35 typedef typename Container::iterator iterator; 35 typedef typename Container::iterator iterator;
36 typedef typename Container::reverse_iterator reverse_iterator; 36 typedef typename Container::reverse_iterator reverse_iterator;
37 virtual ~Layer() { } 37 virtual ~LayerBase() { }
38 /// insert in top by default 38 /// insert in top by default
39 virtual iterator insert(ItemType &item, unsigned int pos=0); 39 virtual iterator insert(ItemType &item, unsigned int pos=0);
40 /// remove item from list 40 /// remove item from list
@@ -43,8 +43,6 @@ public:
43 virtual void raise(ItemType &item); 43 virtual void raise(ItemType &item);
44 /// move item to bottom 44 /// move item to bottom
45 virtual void lower(ItemType &item); 45 virtual void lower(ItemType &item);
46 /// @return layer item on specific position, on failure 0
47 ItemType *getItem(unsigned int position);
48 /// @return number of elements in layer 46 /// @return number of elements in layer
49 size_t size() const { return m_list.size(); } 47 size_t size() const { return m_list.size(); }
50 /// @return layer list 48 /// @return layer list
@@ -58,7 +56,7 @@ private:
58}; 56};
59 57
60template <typename ItemType, typename Container> 58template <typename ItemType, typename Container>
61typename Container::iterator Layer<ItemType, Container>::insert(ItemType &item, unsigned int position) { 59typename Container::iterator LayerBase<ItemType, Container>::insert(ItemType &item, unsigned int position) {
62 // make sure we don't alreay have it in the list 60 // make sure we don't alreay have it in the list
63 if (std::find(itemList().begin(), itemList().end(), &item) != itemList().end()) 61 if (std::find(itemList().begin(), itemList().end(), &item) != itemList().end())
64 return m_list.end(); 62 return m_list.end();
@@ -78,14 +76,14 @@ typename Container::iterator Layer<ItemType, Container>::insert(ItemType &item,
78 76
79 77
80template <typename ItemType, typename Container> 78template <typename ItemType, typename Container>
81void Layer<ItemType, Container>::remove(ItemType &item) { 79void LayerBase<ItemType, Container>::remove(ItemType &item) {
82 iterator it = std::find(itemList().begin(), itemList().end(), &item); 80 iterator it = std::find(itemList().begin(), itemList().end(), &item);
83 if (it != itemList().end()) 81 if (it != itemList().end())
84 m_list.erase(it); 82 m_list.erase(it);
85} 83}
86 84
87template <typename ItemType, typename Container> 85template <typename ItemType, typename Container>
88void Layer<ItemType, Container>::raise(ItemType &item) { 86void LayerBase<ItemType, Container>::raise(ItemType &item) {
89 if (&item == itemList().front()) // already at the bottom 87 if (&item == itemList().front()) // already at the bottom
90 return; 88 return;
91 remove(item); 89 remove(item);
@@ -94,7 +92,7 @@ void Layer<ItemType, Container>::raise(ItemType &item) {
94} 92}
95 93
96template <typename ItemType, typename Container> 94template <typename ItemType, typename Container>
97void Layer<ItemType, Container>::lower(ItemType &item) { 95void LayerBase<ItemType, Container>::lower(ItemType &item) {
98 if (&item == itemList().back()) // already at the bottom 96 if (&item == itemList().back()) // already at the bottom
99 return; 97 return;
100 remove(item); 98 remove(item);
@@ -103,20 +101,7 @@ void Layer<ItemType, Container>::lower(ItemType &item) {
103} 101}
104 102
105template <typename ItemType, typename Container> 103template <typename ItemType, typename Container>
106ItemType *Layer<ItemType, Container>::getItem(unsigned int position) { 104void LayerBase<ItemType, Container>::restack() {
107 if (position >= m_list.size())
108 return 0;
109 iterator it = m_list.begin();
110 iterator it_end = m_list.end();
111 for (unsigned int i=0; i < position && it != it_end; i++);
112
113 if (it == it_end) return 0;
114 else
115 return *it;
116}
117
118template <typename ItemType, typename Container>
119void Layer<ItemType, Container>::restack() {
120} 105}
121 106
122 107