]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/os2/window.cpp
Removed unnecessary branch
[wxWidgets.git] / src / os2 / window.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: windows.cpp
3// Purpose: wxWindow
4// Author: AUTHOR
5// Modified by:
6// Created: ??/??/98
7// RCS-ID: $Id$
8// Copyright: (c) AUTHOR
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifdef __GNUG__
13#pragma implementation "window.h"
14#endif
15
16#ifndef WX_PRECOMP
17 #define INCL_DOS
18 #define INCL_PM
19 #include <os2.h>
20 #include "wx/window.h"
21 #include "wx/accel.h"
22 #include "wx/setup.h"
23 #include "wx/menu.h"
24 #include "wx/dc.h"
25 #include "wx/dcclient.h"
26 #include "wx/utils.h"
27 #include "wx/app.h"
28 #include "wx/panel.h"
29 #include "wx/layout.h"
30 #include "wx/dialog.h"
31 #include "wx/frame.h"
32 #include "wx/listbox.h"
33 #include "wx/button.h"
34 #include "wx/msgdlg.h"
35
36 #include <stdio.h>
37#endif
38
39#if wxUSE_OWNER_DRAWN
40 #include "wx/ownerdrw.h"
41#endif
42
43#if wxUSE_DRAG_AND_DROP
44 #include "wx/dnd.h"
45#endif
46
47#include "wx/menuitem.h"
48#include "wx/log.h"
49
50#if wxUSE_TOOLTIPS
51 #include "wx/tooltip.h"
52#endif
53
54#if wxUSE_CARET
55 #include "wx/caret.h"
56#endif // wxUSE_CARET
57
58#include "wx/intl.h"
59#include "wx/log.h"
60
61
62#include "wx/textctrl.h"
63
64#include <string.h>
65
66// place compiler, OS specific includes here
67
68
69// standard macros -- these are for OS/2 PM, but most GUI's have something similar
70#ifndef GET_X_LPARAM
71// SHORT1FROMMP -- LOWORD
72 #define GET_X_LPARAM(mp) ((unsigned short)(unsigned long)(mp))
73// SHORT2FROMMP -- HIWORD
74 #define GET_Y_LPARAM(mp) ((unsigned short)(unsigned long)(mp >> 16))
75#endif // GET_X_LPARAM
76
77// ---------------------------------------------------------------------------
78// global variables
79// ---------------------------------------------------------------------------
80
81// the last Windows message we got (MT-UNSAFE)
82extern WXMSGID s_currentMsg;
83extern wxList WXDLLEXPORT wxPendingDelete;
84extern wxChar wxCanvasClassName[];
85
86wxMenu *wxCurrentPopupMenu = NULL;
87wxList *wxWinHandleList = NULL;
88
89// ---------------------------------------------------------------------------
90// private functions
91// ---------------------------------------------------------------------------
92// the window proc for all our windows; most gui's have something similar
93MRESULT wxWndProc( HWND hWnd
94 ,ULONG message
95 ,MPARAM mp1
96 ,MPARAM mp2
97 );
98void wxRemoveHandleAssociation(wxWindow *win);
99void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win);
100wxWindow *wxFindWinFromHandle(WXHWND hWnd);
101
102// ---------------------------------------------------------------------------
103// event tables
104// ---------------------------------------------------------------------------
105
106#if !USE_SHARED_LIBRARY
107 IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowBase)
108#endif
109
110BEGIN_EVENT_TABLE(wxWindow, wxWindowBase)
111 EVT_ERASE_BACKGROUND(wxWindow::OnEraseBackground)
112 EVT_SYS_COLOUR_CHANGED(wxWindow::OnSysColourChanged)
113 EVT_INIT_DIALOG(wxWindow::OnInitDialog)
114 EVT_IDLE(wxWindow::OnIdle)
115END_EVENT_TABLE()
116
117// ===========================================================================
118// implementation
119// ===========================================================================
120
121void wxWindow::Init()
122{
123 // generic
124 InitBase();
125
126 // PM specific
127 m_winCaptured = FALSE;
128 m_isBeingDeleted = FALSE;
129 m_mouseInWindow = FALSE;
130 m_backgroundTransparent = FALSE;
131
132 // wxWnd
133 m_hMenu = 0;
134
135 m_hWnd = 0;
136
137 // pass WM_GETDLGCODE to DefWindowProc()
138 m_lDlgCode = 0;
139
140 m_xThumbSize = 0;
141 m_yThumbSize = 0;
142
143 // as all windows are created with WS_VISIBLE style...
144 m_isShown = TRUE;
145
146}
147
148bool wxWindow::Create(wxWindow *parent, wxWindowID id,
149 const wxPoint& pos,
150 const wxSize& size,
151 long style,
152 const wxString& name)
153{
154 wxCHECK_MSG( parent, FALSE, _T("can't create wxWindow without parent") );
155
156 if ( !CreateBase(parent, id, pos, size, style, wxDefaultValidator, name) )
157 return FALSE;
158
159 // TODO: PM Specific initialization
160 parent->AddChild(this);
161 return TRUE;
162}
163
164// Destructor
165wxWindow::~wxWindow()
166{
167 m_isBeingDeleted = TRUE;
168
169 PMDetachWindowMenu();
170 // delete handlers?
171 if (m_parent)
172 m_parent->RemoveChild(this);
173 DestroyChildren();
174 if (m_hWnd)
175 {
176 if(!WinDestroyWindow(GetHwnd()))
177 wxLogLastError("DestroyWindow");
178 // remove hWnd <-> wxWindow association
179 wxRemoveHandleAssociation(this);
180 }
181}
182
183// ---------------------------------------------------------------------------
184// basic operations
185// ---------------------------------------------------------------------------
186
187void wxWindow::Raise()
188{
189 // TODO:
190}
191
192void wxWindow::Lower()
193{
194 // TODO:
195}
196
197void wxWindow::SetFocus()
198{
199 // TODO:
200}
201
202void wxWindow::WarpPointer(int x_pos, int y_pos)
203{
204 // TODO:
205}
206
207void wxWindow::CaptureMouse()
208{
209 // TODO:
210}
211
212void wxWindow::ReleaseMouse()
213{
214 // TODO:
215}
216
217void wxWindow::Refresh(bool eraseBack, const wxRect *rect)
218{
219 // TODO:
220}
221
222void wxWindow::Clear()
223{
224 // TODO:
225}
226
227bool wxWindow::SetFont(const wxFont& f)
228{
229 // TODO:
230 return(TRUE);
231}
232
233int wxWindow::GetCharHeight() const
234{
235 // TODO:
236 return(1);
237}
238
239int wxWindow::GetCharWidth() const
240{
241 // TODO:
242 return(1);
243}
244
245void wxWindow::GetTextExtent( const wxString& string
246 ,int* x
247 ,int* y
248 ,int* descent
249 ,int* externalLeading
250 ,const wxFont* theFont
251 ) const
252{
253 // TODO:
254}
255
256void wxWindow::SetScrollbar( int orient
257 ,int pos
258 ,int thumbVisible
259 ,int range
260 ,bool refresh
261 )
262{
263 // TODO:
264}
265
266void wxWindow::SetScrollPos( int orient
267 ,int pos
268 ,bool refresh
269 )
270{
271 // TODO:
272}
273
274int wxWindow::GetScrollPos(int orient) const
275{
276 // TODO:
277 return(1);
278}
279
280int wxWindow::GetScrollRange(int orient) const
281{
282 // TODO:
283 return(1);
284}
285
286int wxWindow::GetScrollThumb(int orient) const
287{
288 // TODO:
289 return(1);
290}
291
292void wxWindow::ScrollWindow( int dx
293 ,int dy
294 ,const wxRect* rect
295 )
296{
297 // TODO:
298}
299
300#if wxUSE_DRAG_AND_DROP
301void wxWindow::SetDropTarget(wxDropTarget *pDropTarget)
302{
303 // TODO:
304}
305#endif
306
307void wxWindow::DoClientToScreen( int *x, int *y ) const
308{
309 // TODO:
310}
311
312void wxWindow::DoScreenToClient( int *x, int *y ) const
313{
314 // TODO:
315}
316
317void wxWindow::DoGetPosition( int *x, int *y ) const
318{
319 // TODO:
320}
321
322void wxWindow::DoGetSize( int *width, int *height ) const
323{
324 // TODO:
325}
326
327void wxWindow::DoGetClientSize( int *width, int *height ) const
328{
329 // TODO:
330}
331
332void wxWindow::DoSetSize(int x, int y,
333 int width, int height,
334 int sizeFlags)
335{
336 // TODO:
337}
338
339void wxWindow::DoSetClientSize(int width, int height)
340{
341 // TODO:
342}
343
344bool wxWindow::DoPopupMenu( wxMenu *menu, int x, int y )
345{
346 // TODO:
347 return(TRUE);
348}
349
350void wxWindow::Fit()
351{
352 // TODO:
353}
354
355bool wxWindow::Show(bool show) // check if base implementation is OK
356{
357 // TODO:
358 return(TRUE);
359}
360
361bool wxWindow::Enable(bool enable) // check if base implementation is OK
362{
363 // TODO:
364 return(TRUE);
365}
366
367bool wxWindow::SetCursor(const wxCursor& cursor) // check if base implementation is OK
368{
369 // TODO:
370 return(TRUE);
371}
372
373bool wxWindow::Validate()
374{
375 // TODO:
376 return(TRUE);
377}
378
379wxWindow* wxWindow::FindFocus()
380{
381 wxWindow* window = NULL;
382 // TODO:
383 return(window);
384}
385
386void wxWindow::DragAcceptFiles(bool accept)
387{
388 // TODO:
389}
390
391#if wxUSE_CARET && WXWIN_COMPATIBILITY
392void wxWindow::CreateCaret(int w, int h)
393{
394 // TODO:
395}
396
397void wxWindow::CreateCaret(const wxBitmap *bitmap)
398{
399 // TODO:
400}
401
402void wxWindow::DestroyCaret()
403{
404 // TODO:
405}
406
407void wxWindow::ShowCaret(bool show)
408{
409 // TODO:
410}
411
412void wxWindow::SetCaretPos(int x, int y)
413{
414 // TODO:
415}
416
417void wxWindow::GetCaretPos(int *x, int *y) const
418{
419 // TODO:
420}
421
422#endif
423
424void wxWindow::OnCommand(wxWindow& win, wxCommandEvent& event)
425{
426 // TODO:
427}
428
429void wxWindow::OnDefaultAction(wxControl *initiatingItem)
430{
431 // TODO:
432}
433
434void wxWindow::OnEraseBackground(wxEraseEvent& event)
435{
436 // TODO:
437}
438
439void wxWindow::OnChar(wxKeyEvent& event)
440{
441 // TODO:
442}
443
444void wxWindow::OnKeyDown(wxKeyEvent& event)
445{
446 // TODO:
447}
448
449void wxWindow::OnKeyUp(wxKeyEvent& event)
450{
451 // TODO:
452}
453
454void wxWindow::OnPaint(wxPaintEvent& event)
455{
456 // TODO:
457}
458
459void wxWindow::OnIdle(wxIdleEvent& event)
460{
461 // TODO:
462}
463
464void wxWindow::OnInitDialog(wxInitDialogEvent& event)
465{
466 // TODO:
467}
468
469
470wxPoint wxWindow::GetClientAreaOrigin() const
471{
472 // TODO:
473 return wxPoint(0, 0);
474}
475
476void wxWindow::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags)
477{
478 // TODO:
479}
480
481long wxWindow::Default()
482{
483 // TODO:
484 return(1);
485}
486
487void wxWindow::UnsetConstraints(wxLayoutConstraints *c)
488{
489 // TODO:
490}
491
492wxObject* wxWindow::GetChild(int number) const
493{
494 // TODO:
495 return((wxObject*)this);
496}
497
498WXWidget wxWindow::GetHandle() const
499{
500 // TODO:
501 return((WXWidget)m_hWnd);
502}
503
504void wxWindow::PMDetachWindowMenu()
505{
506 if ( m_hMenu )
507 {
508 HMENU hMenu = (HMENU)m_hMenu;
509
510 int N = (int)WinSendMsg(hMenu, MM_QUERYITEMCOUNT, 0, 0);
511 int i;
512 for (i = 0; i < N; i++)
513 {
514 wxChar buf[100];
515 int chars = (int)WinSendMsg(hMenu, MM_QUERYITEMTEXT, MPFROM2SHORT(i, N), buf);
516 if ( !chars )
517 {
518 wxLogLastError(_T("GetMenuString"));
519
520 continue;
521 }
522
523 if ( wxStrcmp(buf, _T("&Window")) == 0 )
524 {
525 WinSendMsg(hMenu, MM_DELETEITEM, MPFROM2SHORT(i, TRUE), 0);
526 break;
527 }
528 }
529 }
530}
531
532void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win)
533{
534 // adding NULL hWnd is (first) surely a result of an error and
535 // (secondly) breaks menu command processing
536 wxCHECK_RET( hWnd != (HWND)NULL,
537 _T("attempt to add a NULL hWnd to window list ignored") );
538
539 if ( !wxWinHandleList->Find((long)hWnd) )
540 wxWinHandleList->Append((long)hWnd, win);
541}
542
543wxWindow *wxFindWinFromHandle(WXHWND hWnd)
544{
545 wxNode *node = wxWinHandleList->Find((long)hWnd);
546 if ( !node )
547 return NULL;
548 return (wxWindow *)node->Data();
549}
550
551void wxRemoveHandleAssociation(wxWindow *win)
552{
553 wxWinHandleList->DeleteObject(win);
554}
555