Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
104
Src/Wasabi/api/wnd/wndtrack.h
Normal file
104
Src/Wasabi/api/wnd/wndtrack.h
Normal file
|
@ -0,0 +1,104 @@
|
|||
#ifndef __WNDTRACK_H
|
||||
#define __WNDTRACK_H
|
||||
|
||||
#include "cwndtrack.h"
|
||||
#include <bfc/tlist.h>
|
||||
#include <bfc/ptrlist.h>
|
||||
#include <api/wndmgr/layout.h>
|
||||
|
||||
class ifc_window;
|
||||
|
||||
#define WNDTRACKCB_POPUPEXIT 0x8797
|
||||
#define WNDTRACKCB_POPUPEXITALL 0x8798
|
||||
|
||||
const int DEFAULT_DOCK_DIST=10;
|
||||
const int MIN_DOCK_DIST=1;
|
||||
const int MAX_DOCK_DIST=64;
|
||||
|
||||
class coopEntry {
|
||||
public:
|
||||
coopEntry(ifc_window *w, int lock=0) : wnd(w), locked(lock) {}
|
||||
~coopEntry() {}
|
||||
|
||||
ifc_window *wnd;
|
||||
int locked;
|
||||
};
|
||||
|
||||
#ifndef _REDOCK_STRUCT_DEFINED
|
||||
#define _REDOCK_STRUCT_DEFINED
|
||||
typedef struct {
|
||||
Layout *l;
|
||||
RECT original_rect;
|
||||
} redock_struct;
|
||||
#endif
|
||||
|
||||
class WindowTracker {
|
||||
public:
|
||||
WindowTracker();
|
||||
~WindowTracker();
|
||||
|
||||
void addWindow(ifc_window *wnd);
|
||||
void removeWindow(ifc_window *wnd);
|
||||
int checkWindow(ifc_window *wnd);
|
||||
ifc_window *enumWindows(int n);
|
||||
int getNumWindows();
|
||||
ifc_window *enumAllWindows(int n);
|
||||
int getNumAllWindows();
|
||||
bool autoDock(ifc_window *thiswnd, RECT *newPosition, int mask);
|
||||
bool autoDock(ifc_window *thiswnd, RECT *newPosition, RECT *oldPosition, int mask);
|
||||
static bool touches(const RECT &z, const RECT &r);
|
||||
|
||||
RECT findOpenRect(const RECT &prev, ifc_window *exclude=NULL);
|
||||
|
||||
static void setDockDistance(int dd);
|
||||
static int getDockDistance();
|
||||
static void setEnableDocking(int ed);
|
||||
|
||||
void startCooperativeMove(ifc_window *wnd);
|
||||
void endCooperativeMove();
|
||||
int wasCooperativeMove();
|
||||
void invalidateAllWindows();
|
||||
int getNumDocked();
|
||||
ifc_window *enumDocked(int n);
|
||||
|
||||
static void addRootWnd(ifc_window *wnd);
|
||||
static void removeRootWnd(ifc_window *wnd);
|
||||
static ifc_window *rootWndFromPoint(POINT *pt);
|
||||
static ifc_window *rootWndFromHwnd(OSWINDOWHANDLE h);
|
||||
static void layoutChanged(Layout *previouswnd, Layout *newwnd); // re-dock windows when changing layout
|
||||
|
||||
static void beforeRedock(Layout *l, redock_struct *rs);
|
||||
static void afterRedock(Layout *l, redock_struct *rs);
|
||||
static ifc_window *getNextDesktopWindow(ifc_window *w, int next);
|
||||
static void snapAdjustWindowRect(ifc_window *w, RECT *r, RECT *adjustvals=NULL);
|
||||
static void unsnapAdjustWindowRect(ifc_window *w, RECT *r, RECT *adjustvals=NULL);
|
||||
|
||||
private:
|
||||
void addCooperative(ifc_window *thiswnd);
|
||||
void addCoopWnd(ifc_window *w, int forced=0);
|
||||
int hasCoopWnd(ifc_window *w);
|
||||
void flushCoopWnds();
|
||||
static void recursAddToMoveWindows(ifc_window *wnd, redock_struct *rs, int v=-1); // used by layoutChanged()
|
||||
|
||||
static PtrList<ifc_window> desktopwnds;
|
||||
static PtrList<ifc_window> nonvirtuals;
|
||||
static PtrList<coopEntry> coopList;
|
||||
static PtrList<ifc_window> recursList;
|
||||
static ifc_window *coopWnd;
|
||||
static PtrList<ifc_window> allWnd;
|
||||
static PtrList<ifc_window> tomoveWindows_top;
|
||||
static PtrList<ifc_window> tomoveWindows_left;
|
||||
static PtrList<ifc_window> tomoveWindows_bottom;
|
||||
static PtrList<ifc_window> tomoveWindows_right;
|
||||
|
||||
static int dockDist;
|
||||
static int dock_enabled;
|
||||
int wascoop;
|
||||
int disabledock;
|
||||
ifc_window *coopcachewnd;
|
||||
int coopcache;
|
||||
};
|
||||
|
||||
extern WindowTracker *windowTracker;
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue