/* dock.h- built-in Dock module for WindowMaker * * Window Maker window manager * * Copyright (c) 1997-2003 Alfredo K. Kojima * Copyright (c) 1998-2003 Dan Pascu * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef WMDOCK_H_ #define WMDOCK_H_ #include "appicon.h" #define WM_DOCK 0 #define WM_CLIP 1 #define WM_DRAWER 2 typedef struct WDock WDock; /******** Accessors/mutators ********/ int wDockGetXPos(WDock *dock); int wDockGetYPos(WDock *dock); int wDockGetMaxIcons(WDock *dock); int wDockGetIconCount(WDock *dock); void wDockAddIconCount(WDock *dock, int count); WAppIcon *wDockGetIcon(WDock *dock, int index); void wDockSetIcon(WDock *doc, int index, WAppIcon *icon); void wDockClearIcon(WDock *dock, int index); int wDockGetType(WDock *dock); int wDockIsAutoCollapse(WDock *dock); int wDockIsAutoRaiseLower(WDock *dock); int wDockIsOnRightSide(WDock *dock); int wDockIsCollapsed(WDock *dock); void wDockSetCollapsed(WDock *dock, int collapsed); int wDockGetAttractIcons(WDock *dock); void wDockSetAttractIcons(WDock *dock, int attract_icons); /******** Lifecycle/resource management ********/ WDock *wDockCreate(WScreen *scr, int type, const char *name); WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type); void wDockDestroy(WDock *dock); void wDockHideIcons(WDock *dock); void wDockShowIcons(WDock *dock); void wDockLower(WDock *dock); void wDockRaise(WDock *dock); void wDockRaiseLower(WDock *dock); void wDockSaveState(WScreen *scr, WMPropList *old_state); Bool wDockAttachIcon(WDock *dock, WAppIcon *icon, int x, int y, Bool update_icon); Bool wDockSnapIcon(WDock *dock, WAppIcon *icon, int req_x, int req_y, int *ret_x, int *ret_y, int redocking); Bool wDockFindFreeSlot(WDock *dock, int *req_x, int *req_y); void wDockDetach(WDock *dock, WAppIcon *icon); Bool wDockMoveIconBetweenDocks(WDock *src, WDock *dest, WAppIcon *icon, int x, int y); void wDockReattachIcon(WDock *dock, WAppIcon *icon, int x, int y); void wSlideAppicons(WAppIcon **appicons, int n, int to_the_left); void wDrawerFillTheGap(WDock *drawer, WAppIcon *aicon, Bool redocking); void wDockFinishLaunch(WAppIcon *icon); void wDockTrackWindowLaunch(WDock *dock, Window window); WAppIcon *wDockFindIconForWindow(WDock *dock, Window window); void wDockDoAutoLaunch(WDock *dock, int workspace); void wDockLaunchWithState(WAppIcon *btn, WSavedState *state); void wDockSwap(WDock *dock); #ifdef USE_DOCK_XDND int wDockReceiveDNDDrop(WScreen *scr, XEvent *event); #endif void wClipIconPaint(WAppIcon *aicon); void wClipSaveState(WScreen *scr); WMPropList *wClipSaveWorkspaceState(WScreen *scr, int workspace); WAppIcon *wClipRestoreState(WScreen *scr, WMPropList *clip_state); void wDrawerIconPaint(WAppIcon *dicon); void wDrawersSaveState(WScreen *scr); void wDrawersRestoreState(WScreen *scr); int wIsADrawer(WAppIcon *aicon); void wClipUpdateForWorkspaceChange(WScreen *scr, int workspace); RImage *wClipMakeTile(RImage *normalTile); RImage* wDrawerMakeTile(WScreen *scr, RImage *normalTile); #define WO_FAILED 0 #define WO_NOT_APPLICABLE 1 #define WO_SUCCESS 2 typedef enum { P_NORMAL = 0, P_AUTO_RAISE_LOWER, P_KEEP_ON_TOP, } dockPosition; int wClipMakeIconOmnipresent(WAppIcon *aicon, int omnipresent); #endif