root/src/servers/app/stackandtile/Stacking.h
/*
 * Copyright 2010, Haiku.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              Clemens Zeidler <haiku@clemens-zeidler.de>
 */
#ifndef STACKING_H
#define STACKING_H

#include "ObjectList.h"
#include "StackAndTile.h"


class SATWindow;


class StackingEventHandler
{
public:
        static bool                             HandleMessage(SATWindow* sender,
                                                                BPrivate::LinkReceiver& link,
                                                                BPrivate::LinkSender& reply);
};


class SATStacking : public SATSnappingBehaviour {
public:
                                                        SATStacking(SATWindow* window);
                                                        ~SATStacking();

                bool                            FindSnappingCandidates(SATGroup* group);
                bool                            JoinCandidates();
                void                            DoWindowLayout();

                void                            RemovedFromArea(WindowArea* area);
                void                            WindowLookChanged(window_look look);
private:
                bool                            _IsStackableWindow(Window* window);
                void                            _ClearSearchResult();
                void                            _HighlightWindows(bool highlight = true);

                SATWindow*                      fSATWindow;

                SATWindow*                      fStackingParent;
};

#endif