since Button changed to a FbWindow we can change the container to hold fbwindows

This commit is contained in:
fluxgen 2003-08-13 09:39:16 +00:00
parent 86016331b0
commit 87c97a9668
2 changed files with 15 additions and 16 deletions

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// $Id: Container.cc,v 1.1 2003/08/11 15:28:33 fluxgen Exp $ // $Id: Container.cc,v 1.2 2003/08/13 09:39:16 fluxgen Exp $
#include "FbTk/Button.hh" #include "FbTk/Button.hh"
#include "Container.hh" #include "Container.hh"
@ -59,7 +59,7 @@ void Container::insertItems(ItemList &item_list, int pos) {
ItemList::iterator it = m_item_list.begin(); ItemList::iterator it = m_item_list.begin();
ItemList::iterator it_end = m_item_list.end(); ItemList::iterator it_end = m_item_list.end();
for (; it != it_end; ++it) { for (; it != it_end; ++it) {
if ((*it)->window().parent() != this) if ((*it)->parent() != this)
return; return;
} }
@ -87,7 +87,7 @@ void Container::insertItem(Item item, int pos) {
return; return;
// it must be a child of this window // it must be a child of this window
if (item->window().parent() != this) if (item->parent() != this)
return; return;
if (pos >= size() || pos < 0) { if (pos >= size() || pos < 0) {
@ -177,10 +177,15 @@ void Container::repositionItems() {
int next_x = 0; int next_x = 0;
for (; it != it_end; ++it, next_x += max_width_per_client) { for (; it != it_end; ++it, next_x += max_width_per_client) {
// resize each clients including border in size // resize each clients including border in size
(*it)->moveResize(next_x - (*it)->window().borderWidth(), (*it)->moveResize(next_x - (*it)->borderWidth(),
(*it)->window().borderWidth(), -(*it)->borderWidth(),
max_width_per_client - (*it)->window().borderWidth(), max_width_per_client - (*it)->borderWidth(),
height() + (*it)->window().borderWidth()); height() + (*it)->borderWidth());
(*it)->clear(); (*it)->clear();
} }
} }
unsigned int Container::maxWidthPerClient() const {
return (size() == 0 ? width() : (width() + size()*m_item_list.front()->borderWidth())/size());
}

View file

@ -20,7 +20,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// $Id: Container.hh,v 1.1 2003/08/11 15:28:33 fluxgen Exp $ // $Id: Container.hh,v 1.2 2003/08/13 09:39:16 fluxgen Exp $
#ifndef CONTAINER_HH #ifndef CONTAINER_HH
#define CONTAINER_HH #define CONTAINER_HH
@ -31,15 +31,9 @@
#include <list> #include <list>
class ContainerTheme;
namespace FbTk {
class Button;
};
class Container:public FbTk::FbWindow, public FbTk::EventHandler, private FbTk::NotCopyable { class Container:public FbTk::FbWindow, public FbTk::EventHandler, private FbTk::NotCopyable {
public: public:
typedef FbTk::Button * Item; typedef FbTk::FbWindow * Item;
typedef std::list<Item> ItemList; typedef std::list<Item> ItemList;
explicit Container(const FbTk::FbWindow &parent); explicit Container(const FbTk::FbWindow &parent);
@ -65,7 +59,7 @@ public:
int size() const { return m_item_list.size(); } int size() const { return m_item_list.size(); }
const Item selected() const { return m_selected; } const Item selected() const { return m_selected; }
Item selected() { return m_selected; } Item selected() { return m_selected; }
unsigned int maxWidthPerClient() const { return (size() == 0 ? width() : width()/size()); } unsigned int maxWidthPerClient() const;
unsigned int maxHeightPerClient() const { return (size() == 0 ? height() : height()/size()); } unsigned int maxHeightPerClient() const { return (size() == 0 ? height() : height()/size()); }
private: private:
void repositionItems(); void repositionItems();