Get full path of argv[0] before we change directories.
[wine.git] / windows / ttydrv / wnd.c
blob7c55553d2c5a407f7c1a583c5608304b8c9884d6
1 /*
2 * TTY window driver
4 * Copyright 1998,1999 Patrik Stridvall
5 */
7 #include "config.h"
9 #include "class.h"
10 #include "dc.h"
11 #include "heap.h"
12 #include "ttydrv.h"
13 #include "win.h"
14 #include "debugtools.h"
16 DEFAULT_DEBUG_CHANNEL(ttydrv)
18 /***********************************************************************
19 * TTYDRV_WND_GetCursesWindow
21 * Return the Curses window associated to a window.
23 WINDOW *TTYDRV_WND_GetCursesWindow(WND *wndPtr)
25 return wndPtr && wndPtr->pDriverData ?
26 ((TTYDRV_WND_DATA *) wndPtr->pDriverData)->window : 0;
29 /**********************************************************************
30 * TTYDRV_WND_Initialize
32 void TTYDRV_WND_Initialize(WND *wndPtr)
34 TTYDRV_WND_DATA *pWndDriverData =
35 (TTYDRV_WND_DATA *) HeapAlloc(SystemHeap, 0, sizeof(TTYDRV_WND_DATA));
37 TRACE("(%p)\n", wndPtr);
39 wndPtr->pDriverData = (void *) pWndDriverData;
41 pWndDriverData->window = NULL;
44 /**********************************************************************
45 * TTYDRV_WND_Finalize
47 void TTYDRV_WND_Finalize(WND *wndPtr)
49 TTYDRV_WND_DATA *pWndDriverData =
50 (TTYDRV_WND_DATA *) wndPtr->pDriverData;
52 TRACE("(%p)\n", wndPtr);
54 if(!pWndDriverData) {
55 ERR("WND already destroyed\n");
56 return;
59 if(pWndDriverData->window) {
60 ERR("WND destroyed without destroying the associated Curses Windows");
63 HeapFree(SystemHeap, 0, pWndDriverData);
64 wndPtr->pDriverData = NULL;
67 /**********************************************************************
68 * TTYDRV_WND_CreateDesktopWindow
70 BOOL TTYDRV_WND_CreateDesktopWindow(WND *wndPtr, CLASS *classPtr, BOOL bUnicode)
72 TTYDRV_WND_DATA *pWndDriverData =
73 (TTYDRV_WND_DATA *) wndPtr->pDriverData;
75 TRACE("(%p, %p, %d)\n", wndPtr, classPtr, bUnicode);
77 if(!pWndDriverData) { ERR("WND never initialized\n"); return FALSE; }
79 pWndDriverData->window = TTYDRV_GetRootWindow();
80 return TRUE;
83 /**********************************************************************
84 * TTYDRV_WND_CreateWindow
86 BOOL TTYDRV_WND_CreateWindow(WND *wndPtr, CLASS *classPtr, CREATESTRUCTA *cs, BOOL bUnicode)
88 #ifdef WINE_CURSES
89 WINDOW *window;
90 INT cellWidth=8, cellHeight=8; /* FIXME: Hardcoded */
92 TRACE("(%p, %p, %p, %d)\n", wndPtr, classPtr, cs, bUnicode);
94 /* Only create top-level windows */
95 if(cs->style & WS_CHILD)
96 return TRUE;
98 window = subwin(TTYDRV_GetRootWindow(), cs->cy/cellHeight, cs->cx/cellWidth,
99 cs->y/cellHeight, cs->x/cellWidth);
100 werase(window);
101 wrefresh(window);
103 return TRUE;
104 #else /* defined(WINE_CURSES) */
105 FIXME("(%p, %p, %p, %d): stub\n", wndPtr, classPtr, cs, bUnicode);
107 return TRUE;
108 #endif /* defined(WINE_CURSES) */
111 /***********************************************************************
112 * TTYDRV_WND_DestroyWindow
114 BOOL TTYDRV_WND_DestroyWindow(WND *wndPtr)
116 #ifdef WINE_CURSES
117 WINDOW *window;
119 TRACE("(%p)\n", wndPtr);
121 window = TTYDRV_WND_GetCursesWindow(wndPtr);
122 if(window && window != TTYDRV_GetRootWindow()) {
123 delwin(window);
126 return TRUE;
127 #else /* defined(WINE_CURSES) */
128 FIXME("(%p): stub\n", wndPtr);
130 return TRUE;
131 #endif /* defined(WINE_CURSES) */
134 /*****************************************************************
135 * TTYDRV_WND_SetParent
137 WND *TTYDRV_WND_SetParent(WND *wndPtr, WND *pWndParent)
139 FIXME("(%p, %p): stub\n", wndPtr, pWndParent);
141 return NULL;
144 /***********************************************************************
145 * TTYDRV_WND_ForceWindowRaise
147 void TTYDRV_WND_ForceWindowRaise(WND *wndPtr)
149 FIXME("(%p): stub\n", wndPtr);
152 /***********************************************************************
153 * TTYDRV_WINPOS_SetWindowPos
155 void TTYDRV_WND_SetWindowPos(WND *wndPtr, const WINDOWPOS *winpos, BOOL bSMC_SETXPOS)
157 FIXME("(%p, %p, %d): stub\n", wndPtr, winpos, bSMC_SETXPOS);
160 /*****************************************************************
161 * TTYDRV_WND_SetText
163 void TTYDRV_WND_SetText(WND *wndPtr, LPCWSTR text)
165 FIXME("(%p, %s): stub\n", wndPtr, debugstr_w(text));
168 /*****************************************************************
169 * TTYDRV_WND_SetFocus
171 void TTYDRV_WND_SetFocus(WND *wndPtr)
173 FIXME("(%p): stub\n", wndPtr);
176 /*****************************************************************
177 * TTYDRV_WND_PreSizeMove
179 void TTYDRV_WND_PreSizeMove(WND *wndPtr)
181 FIXME("(%p): stub\n", wndPtr);
184 /*****************************************************************
185 * TTYDRV_WND_PostSizeMove
187 void TTYDRV_WND_PostSizeMove(WND *wndPtr)
189 FIXME("(%p): stub\n", wndPtr);
192 /*****************************************************************
193 * TTYDRV_WND_ScrollWindow
195 void TTYDRV_WND_ScrollWindow(
196 WND *wndPtr, DC *dcPtr, INT dx, INT dy,
197 const RECT *clipRect, BOOL bUpdate)
199 FIXME("(%p, %p, %d, %d, %p, %d): stub\n",
200 wndPtr, dcPtr, dx, dy, clipRect, bUpdate);
203 /***********************************************************************
204 * TTYDRV_WND_SetDrawable
206 void TTYDRV_WND_SetDrawable(WND *wndPtr, DC *dc, WORD flags, BOOL bSetClipOrigin)
208 TRACE("(%p, %p, %d, %d)\n", wndPtr, dc, flags, bSetClipOrigin);
210 /* FIXME: Should be done in the common code instead */
211 if(!wndPtr) {
212 dc->w.DCOrgX = 0;
213 dc->w.DCOrgY = 0;
214 } else {
215 if(flags & DCX_WINDOW) {
216 dc->w.DCOrgX = wndPtr->rectWindow.left;
217 dc->w.DCOrgY = wndPtr->rectWindow.top;
218 } else {
219 dc->w.DCOrgX = wndPtr->rectClient.left;
220 dc->w.DCOrgY = wndPtr->rectClient.top;
225 /***********************************************************************
226 * TTYDRV_WND_SetHostAttr
228 BOOL TTYDRV_WND_SetHostAttr(WND *wndPtr, INT attr, INT value)
230 FIXME("(%p): stub\n", wndPtr);
232 return TRUE;
235 /***********************************************************************
236 * TTYDRV_WND_IsSelfClipping
238 BOOL TTYDRV_WND_IsSelfClipping(WND *wndPtr)
240 FIXME("(%p): semistub\n", wndPtr);
242 return FALSE;