From dfe1eee3bb9ecde8c4490ea69c07b5030d69530c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 29 Jun 1999 12:34:18 +0000 Subject: [PATCH] my wxMotif fixes (merged with Robert's changes), wxMotif compiles, links and runs... until you click in the menu, that is. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2929 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dialog.h | 20 +++ include/wx/generic/gridg.h | 7 +- include/wx/generic/textdlgg.h | 2 + include/wx/gtk/dialog.h | 5 - include/wx/gtk1/dialog.h | 5 - include/wx/motif/clipbrd.h | 32 ++-- include/wx/motif/dialog.h | 36 ++-- include/wx/motif/window.h | 6 +- include/wx/msw/dialog.h | 6 +- src/generic/gridg.cpp | 304 +++++++++++++++++++--------------- src/generic/msgdlgg.cpp | 7 +- src/generic/tipdlg.cpp | 9 +- src/gtk/Makefile.am | 2 - src/gtk1/Makefile.am | 2 - src/motif/Makefile.am | 2 + src/motif/app.cpp | 2 +- src/motif/bmpbuttn.cpp | 68 ++++---- src/motif/button.cpp | 47 +++--- src/motif/choice.cpp | 5 +- src/motif/clipbrd.cpp | 5 + src/motif/control.cpp | 34 ++-- src/motif/dataobj.cpp | 7 +- src/motif/dialog.cpp | 176 ++++++++------------ src/motif/filedlg.cpp | 104 ++++++------ src/motif/font.cpp | 60 +++---- src/motif/frame.cpp | 252 ++++++++++++++-------------- src/motif/mdi.cpp | 106 ++++++------ src/motif/region.cpp | 234 +++++++++++++------------- 28 files changed, 788 insertions(+), 757 deletions(-) diff --git a/include/wx/dialog.h b/include/wx/dialog.h index a14930b5b0..709d6f5f0b 100644 --- a/include/wx/dialog.h +++ b/include/wx/dialog.h @@ -1,3 +1,14 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/dialog.h +// Purpose: wxDialogBase class +// Author: Vadim Zeitlin +// Modified by: +// Created: 29.06.99 +// RCS-ID: $Id$ +// Copyright: (c) Vadim Zeitlin +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + #ifndef _WX_DIALOG_H_BASE_ #define _WX_DIALOG_H_BASE_ @@ -6,6 +17,12 @@ class WXDLLEXPORT wxDialogBase : public wxPanel { +public: + // the modal dialogs have a return code - usually the id of the last + // pressed button + void SetReturnCode(int returnCode) { m_returnCode = returnCode; } + int GetReturnCode() const { return m_returnCode; } + protected: // functions to help with dialog layout // ------------------------------------ @@ -43,6 +60,9 @@ protected: // as the height of just text which may be retrieved from // wxGetCharHeight()) long GetStandardTextHeight(); + + // the return code from modal dialog + int m_returnCode; }; #if defined(__WXMSW__) diff --git a/include/wx/generic/gridg.h b/include/wx/generic/gridg.h index 213a5fadba..81a409bea1 100644 --- a/include/wx/generic/gridg.h +++ b/include/wx/generic/gridg.h @@ -2,8 +2,9 @@ // Name: gridg.h // Purpose: wxGenericGrid // Author: Julian Smart -// Modified by: Michael Bedward 20 April 1999 -// Added edit in place facility +// Modified by: Michael Bedward +// Added edit in place facility, 20 April 1999 +// Added cursor key control, 29 Jun 1999 // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) @@ -226,7 +227,9 @@ public: void OnMouseEvent(wxMouseEvent& event); void OnSize(wxSizeEvent& event); void OnText(wxCommandEvent& ev); + void OnTextEnter(wxCommandEvent& ev); void OnTextInPlace(wxCommandEvent& ev); + void OnTextInPlaceEnter(wxCommandEvent& ev); void OnGridScroll(wxScrollEvent& ev); protected: diff --git a/include/wx/generic/textdlgg.h b/include/wx/generic/textdlgg.h index 5b0e013ccb..be592594f6 100644 --- a/include/wx/generic/textdlgg.h +++ b/include/wx/generic/textdlgg.h @@ -20,6 +20,8 @@ #include "wx/dialog.h" +class WXDLLEXPORT wxTextCtrl; + // Handy dialog functions (will be converted into classes at some point) WXDLLEXPORT_DATA(extern const wxChar*) wxGetTextFromUserPromptStr; WXDLLEXPORT_DATA(extern const wxChar*) wxEmptyString; diff --git a/include/wx/gtk/dialog.h b/include/wx/gtk/dialog.h index ac1f0db9a0..cc3cbcac1a 100644 --- a/include/wx/gtk/dialog.h +++ b/include/wx/gtk/dialog.h @@ -87,9 +87,6 @@ public: virtual void Maximize() { } virtual void Restore() { } - void SetReturnCode(int returnCode) { m_returnCode = returnCode; } - int GetReturnCode() const { return m_returnCode; } - // implementation virtual void GtkOnSize( int x, int y, int width, int height ); @@ -108,8 +105,6 @@ protected: int sizeFlags = wxSIZE_AUTO); private: - int m_returnCode; - DECLARE_EVENT_TABLE() }; diff --git a/include/wx/gtk1/dialog.h b/include/wx/gtk1/dialog.h index ac1f0db9a0..cc3cbcac1a 100644 --- a/include/wx/gtk1/dialog.h +++ b/include/wx/gtk1/dialog.h @@ -87,9 +87,6 @@ public: virtual void Maximize() { } virtual void Restore() { } - void SetReturnCode(int returnCode) { m_returnCode = returnCode; } - int GetReturnCode() const { return m_returnCode; } - // implementation virtual void GtkOnSize( int x, int y, int width, int height ); @@ -108,8 +105,6 @@ protected: int sizeFlags = wxSIZE_AUTO); private: - int m_returnCode; - DECLARE_EVENT_TABLE() }; diff --git a/include/wx/motif/clipbrd.h b/include/wx/motif/clipbrd.h index dceeabcfaa..781a9a0b94 100644 --- a/include/wx/motif/clipbrd.h +++ b/include/wx/motif/clipbrd.h @@ -9,7 +9,7 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_CLIPBRD_H_ @@ -20,11 +20,11 @@ #endif #include "wx/defs.h" -#include "wx/setup.h" + +#if wxUSE_CLIPBOARD #include "wx/dataobj.h" -#include "wx/list.h" #include "wx/module.h" bool WXDLLEXPORT wxOpenClipboard(); @@ -48,35 +48,35 @@ class WXDLLEXPORT wxClipboard: public wxObject DECLARE_DYNAMIC_CLASS(wxClipboard) public: - + wxClipboard(); ~wxClipboard(); // open the clipboard before SetData() and GetData() virtual bool Open(); - + // close the clipboard after SetData() and GetData() virtual void Close(); - + // can be called several times virtual bool SetData( wxDataObject *data ); - // format available on the clipboard ? - // supply ID if private format, the same as wxPrivateDataObject::SetId() + // format available on the clipboard ? + // supply ID if private format, the same as wxPrivateDataObject::SetId() virtual bool IsSupported( wxDataFormat format ); - + // fill data with data on the clipboard (if available) virtual bool GetData( wxDataObject *data ); - + // clears wxTheClipboard and the system's clipboard if possible virtual void Clear(); /// If primary == TRUE, use primary selection in all further ops, /// primary=FALSE resets it. inline void UsePrimarySelection(bool primary = TRUE) { m_usePrimary = primary; } - - // implementation - + + // implementation + bool m_open; wxList m_data; bool m_usePrimary; @@ -92,7 +92,7 @@ WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard; class wxClipboardModule: public wxModule { DECLARE_DYNAMIC_CLASS(wxClipboardModule) - + public: wxClipboardModule() {} bool OnInit(); @@ -154,7 +154,7 @@ class WXDLLEXPORT wxClipboard : public wxObject char *GetClipboardData(char *format, long *length, long time); /* Get the clipboard client directly. Will be NULL if clipboard data - is a string, or if some other application owns the clipboard. + is a string, or if some other application owns the clipboard. This can be useful for shortcutting data translation, if the clipboard user can check for a specific client. (This is used by the wxMediaEdit class.) */ @@ -170,5 +170,7 @@ WXDLLEXPORT_DATA(extern wxClipboard*) wxTheClipboard; #endif // Old clipboard class +#endif // wxUSE_CLIPBOARD + #endif // _WX_CLIPBRD_H_ diff --git a/include/wx/motif/dialog.h b/include/wx/motif/dialog.h index b929956e96..da9d0382f1 100644 --- a/include/wx/motif/dialog.h +++ b/include/wx/motif/dialog.h @@ -6,22 +6,20 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_DIALOG_H_ #define _WX_DIALOG_H_ #ifdef __GNUG__ -#pragma interface "dialog.h" + #pragma interface "dialog.h" #endif -#include "wx/panel.h" - WXDLLEXPORT_DATA(extern const char*) wxDialogNameStr; // Dialog boxes -class WXDLLEXPORT wxDialog : public wxPanel +class WXDLLEXPORT wxDialog : public wxDialogBase { DECLARE_DYNAMIC_CLASS(wxDialog) @@ -67,47 +65,43 @@ public: void Lower(); virtual bool IsIconized() const; - void Fit(); void SetTitle(const wxString& title); wxString GetTitle() const ; - // bool OnClose(); - void OnCharHook(wxKeyEvent& event); - void OnCloseWindow(wxCloseEvent& event); - void SetModal(bool flag); - virtual void Centre(int direction = wxBOTH); - virtual bool IsModal() const { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); } + virtual bool IsModal() const + { return ((GetWindowStyleFlag() & wxDIALOG_MODAL) == wxDIALOG_MODAL); } virtual int ShowModal(); virtual void EndModal(int retCode); - void SetReturnCode(int returnCode) { m_returnCode = returnCode; } - int GetReturnCode() const { return m_returnCode; } + // Implementation + virtual void ChangeFont(bool keepOriginalSize = TRUE); + virtual void ChangeBackgroundColour(); + virtual void ChangeForegroundColour(); + inline WXWidget GetTopWidget() const { return m_mainWidget; } + inline WXWidget GetClientWidget() const { return m_mainWidget; } // Standard buttons void OnOK(wxCommandEvent& event); void OnApply(wxCommandEvent& event); void OnCancel(wxCommandEvent& event); + void OnPaint(wxPaintEvent &event); // Responds to colour changes void OnSysColourChanged(wxSysColourChangedEvent& event); - // Implementation - virtual void ChangeFont(bool keepOriginalSize = TRUE); - virtual void ChangeBackgroundColour(); - virtual void ChangeForegroundColour(); - inline WXWidget GetTopWidget() const { return m_mainWidget; } - inline WXWidget GetClientWidget() const { return m_mainWidget; } + // bool OnClose(); + void OnCharHook(wxKeyEvent& event); + void OnCloseWindow(wxCloseEvent& event); public: //// Motif-specific bool m_modalShowing; wxString m_dialogTitle; - int m_returnCode; protected: virtual void DoSetSize(int x, int y, diff --git a/include/wx/motif/window.h b/include/wx/motif/window.h index 3a165449c1..90be6d7037 100644 --- a/include/wx/motif/window.h +++ b/include/wx/motif/window.h @@ -173,6 +173,10 @@ public: void ClearUpdateRegion() { m_updateRegion.Clear(); } void SetUpdateRegion(const wxRegion& region) { m_updateRegion = region; } + // sets the fore/background colour for the given widget + static void DoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour); + static void DoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour = FALSE); + protected: // event handlers (not virtual by design) void OnIdle(wxIdleEvent& event); @@ -212,8 +216,6 @@ protected: public: // Change properties virtual void ChangeFont(bool keepOriginalSize = TRUE); // Change to the current font (often overridden) - virtual void DoChangeForegroundColour(WXWidget widget, wxColour& foregroundColour); - virtual void DoChangeBackgroundColour(WXWidget widget, wxColour& backgroundColour, bool changeArmColour = FALSE); // Change background and foreground colour using current background colour // setting (Motif generates foreground based on background) diff --git a/include/wx/msw/dialog.h b/include/wx/msw/dialog.h index ccc130f2ac..917667ed4f 100644 --- a/include/wx/msw/dialog.h +++ b/include/wx/msw/dialog.h @@ -60,9 +60,6 @@ public: ~wxDialog(); - void SetReturnCode(int returnCode) { m_returnCode = returnCode; } - int GetReturnCode() const { return m_returnCode; } - virtual bool Destroy(); virtual void DoSetClientSize(int width, int height); @@ -132,8 +129,7 @@ private: WXHWND m_hwndToolTip; #endif // tooltips - int m_returnCode; - +private: DECLARE_EVENT_TABLE() }; diff --git a/src/generic/gridg.cpp b/src/generic/gridg.cpp index db89849d02..3f21090c23 100644 --- a/src/generic/gridg.cpp +++ b/src/generic/gridg.cpp @@ -2,38 +2,40 @@ // Name: gridg.cpp // Purpose: wxGenericGrid // Author: Julian Smart -// Modified by: Michael Bedward 20 Apr 1999 -// Added edit in place facility +// Modified by: Michael Bedward +// Added edit in place facility, 20 Apr 1999 +// Added cursor key control, 29 Jun 1999 // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ -#pragma implementation "gridg.h" -#pragma interface + #pragma implementation "gridg.h" + #pragma interface #endif // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #ifndef WX_PRECOMP - #include "wx/utils.h" - #include "wx/dcclient.h" - #include "wx/dcmemory.h" - #include "wx/textctrl.h" + #include "wx/utils.h" + #include "wx/dcclient.h" + #include "wx/dcmemory.h" + #include "wx/textctrl.h" + #include "wx/settings.h" #endif #include #include "wx/string.h" + #include "wx/generic/gridg.h" -#include "wx/settings.h" // Set to zero to use no double-buffering #ifdef __WXMSW__ @@ -56,6 +58,8 @@ BEGIN_EVENT_TABLE(wxGenericGrid, wxPanel) EVT_MOUSE_EVENTS(wxGenericGrid::OnMouseEvent) EVT_TEXT(wxGRID_TEXT_CTRL, wxGenericGrid::OnText) EVT_TEXT(wxGRID_EDIT_IN_PLACE_TEXT_CTRL, wxGenericGrid::OnTextInPlace) + EVT_TEXT_ENTER(wxGRID_TEXT_CTRL, wxGenericGrid::OnTextEnter) + EVT_TEXT_ENTER(wxGRID_EDIT_IN_PLACE_TEXT_CTRL, wxGenericGrid::OnTextInPlaceEnter) EVT_COMMAND_SCROLL(wxGRID_HSCROLL, wxGenericGrid::OnGridScroll) EVT_COMMAND_SCROLL(wxGRID_VSCROLL, wxGenericGrid::OnGridScroll) @@ -92,7 +96,7 @@ wxGenericGrid::wxGenericGrid(void) m_editInPlace = TRUE; m_inOnTextInPlace = FALSE; - + #if defined(__WIN95__) m_scrollWidth = wxSystemSettings::GetSystemMetric(wxSYS_VSCROLL_X); #elif defined(__WXGTK__) @@ -215,7 +219,7 @@ bool wxGenericGrid::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, m_textItem = new wxTextCtrl(m_editingPanel, wxGRID_TEXT_CTRL, "", wxPoint(m_editControlPosition.x, m_editControlPosition.y), wxSize(m_editControlPosition.width, -1), - 0); + wxTE_PROCESS_ENTER); m_textItem->Show(TRUE); m_textItem->SetFocus(); int controlW, controlH; @@ -233,12 +237,12 @@ bool wxGenericGrid::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, // SetSize(pos.x, pos.y, size.x, size.y); m_inPlaceTextItem = new wxTextCtrl( (wxPanel*)this, wxGRID_EDIT_IN_PLACE_TEXT_CTRL, "", - wxPoint( m_currentRect.x-2, m_currentRect.y-2 ), - wxSize( m_currentRect.width+4, m_currentRect.height+4 ), - wxNO_BORDER ); + wxPoint( m_currentRect.x-2, m_currentRect.y-2 ), + wxSize( m_currentRect.width+4, m_currentRect.height+4 ), + wxNO_BORDER | wxTE_PROCESS_ENTER ); m_inPlaceTextItem->Show(TRUE); m_inPlaceTextItem->SetFocus(); - + return TRUE; } @@ -800,8 +804,8 @@ void wxGenericGrid::DrawColumnLabel(wxDC *dc, wxRect *rect, int col) rect2.height -= 4; dc->SetTextForeground(GetLabelTextColour()); dc->SetFont(GetLabelTextFont()); - if ( !cell->GetTextValue().IsNull() ) - DrawTextRect(dc, cell->GetTextValue(), &rect2, GetLabelAlignment(wxHORIZONTAL)); + if ( !cell->GetTextValue().IsNull() ) + DrawTextRect(dc, cell->GetTextValue(), &rect2, GetLabelAlignment(wxHORIZONTAL)); } } @@ -853,8 +857,8 @@ void wxGenericGrid::DrawRowLabel(wxDC *dc, wxRect *rect, int row) rect2.height -= 4; dc->SetTextForeground(GetLabelTextColour()); dc->SetFont(GetLabelTextFont()); - if ( !cell->GetTextValue().IsNull() ) - DrawTextRect(dc, cell->GetTextValue(), &rect2, GetLabelAlignment(wxVERTICAL)); + if ( !cell->GetTextValue().IsNull() ) + DrawTextRect(dc, cell->GetTextValue(), &rect2, GetLabelAlignment(wxVERTICAL)); } } @@ -931,8 +935,8 @@ void wxGenericGrid::DrawCellValue(wxDC *dc, wxRect *rect, int row, int col) dc->SetTextForeground(cell->GetTextColour()); dc->SetFont(cell->GetFont()); - if ( !cell->GetTextValue().IsNull() ) - DrawTextRect(dc, cell->GetTextValue(), &rect2, cell->GetAlignment()); + if ( !cell->GetTextValue().IsNull() ) + DrawTextRect(dc, cell->GetTextValue(), &rect2, cell->GetAlignment()); } } } @@ -970,16 +974,16 @@ void wxGenericGrid::AdjustScrollbars(void) int widthCount = 0; int i; - int nx = 0; + int nx = 0; for (i = m_scrollPosX ; i < m_totalCols; i++) { widthCount += m_colWidths[i]; - // A partial bit doesn't count, we still have to scroll to see the - // rest of it + // A partial bit doesn't count, we still have to scroll to see the + // rest of it if (widthCount + m_leftOfSheet + m_verticalLabelWidth > (cw-vertScrollBarWidth)) break; - else - nx ++; + else + nx ++; } @@ -993,16 +997,16 @@ void wxGenericGrid::AdjustScrollbars(void) int heightCount = 0; int i; - int ny = 0; + int ny = 0; for (i = m_scrollPosY ; i < m_totalRows; i++) { heightCount += m_rowHeights[i]; - // A partial bit doesn't count, we still have to scroll to see the - // rest of it + // A partial bit doesn't count, we still have to scroll to see the + // rest of it if (heightCount + m_topOfSheet + m_horizontalLabelHeight > (ch-horizScrollBarHeight)) break; - else - ny ++; + else + ny ++; } noVertSteps += ny; @@ -1010,8 +1014,8 @@ void wxGenericGrid::AdjustScrollbars(void) if (m_totalGridWidth + vertScrollBarWidth <= cw) { - if ( m_hScrollBar ) - m_hScrollBar->Show(FALSE); + if ( m_hScrollBar ) + m_hScrollBar->Show(FALSE); SetScrollPosX(0); } else @@ -1068,7 +1072,7 @@ void wxGenericGrid::AdjustScrollbars(void) void wxGenericGrid::OnSize(wxSizeEvent& WXUNUSED(event) ) { if (!m_vScrollBar || !m_hScrollBar) - return; + return; AdjustScrollbars(); @@ -1350,7 +1354,7 @@ void wxGenericGrid::OnMouseEvent(wxMouseEvent& ev) SetCursor(*wxSTANDARD_CURSOR); int cw, ch; GetClientSize(&cw, &ch); - wxSizeEvent evt; + wxSizeEvent evt; OnSize(evt); break; } @@ -1416,17 +1420,17 @@ void wxGenericGrid::OnSelectCellImplementation(wxDC *dc, int row, int col) { HighlightCell(dc); } - + // Highlight the new cell and copy its content to the edit control SetCurrentRect(m_wCursorRow, m_wCursorColumn); wxGridCell *cell = GetCell(m_wCursorRow, m_wCursorColumn); if (cell) { - if ( cell->GetTextValue().IsNull() ) - m_textItem->SetValue(""); - else - m_textItem->SetValue(cell->GetTextValue()); + if ( cell->GetTextValue().IsNull() ) + m_textItem->SetValue(""); + else + m_textItem->SetValue(cell->GetTextValue()); } SetGridClippingRegion(dc); @@ -1434,30 +1438,30 @@ void wxGenericGrid::OnSelectCellImplementation(wxDC *dc, int row, int col) if ( m_editable && m_editInPlace ) { - m_inPlaceTextItem->SetSize( m_currentRect.x-2, m_currentRect.y-2, - m_currentRect.width+4, m_currentRect.height+4 ); + m_inPlaceTextItem->SetSize( m_currentRect.x-2, m_currentRect.y-2, + m_currentRect.width+4, m_currentRect.height+4 ); if ( cell ) - { - if ( cell->GetTextValue().IsNull() ) - { - m_inPlaceTextItem->SetValue( "" ); - } - else - { - m_inPlaceTextItem->SetFont( cell->GetFont() ); - m_inPlaceTextItem->SetValue( cell->GetTextValue() ); - } - } - + { + if ( cell->GetTextValue().IsNull() ) + { + m_inPlaceTextItem->SetValue( "" ); + } + else + { + m_inPlaceTextItem->SetFont( cell->GetFont() ); + m_inPlaceTextItem->SetValue( cell->GetTextValue() ); + } + } + m_inPlaceTextItem->Show(TRUE); m_inPlaceTextItem->SetFocus(); } else - { + { // 1) Why isn't this needed for Windows?? // Probably because of the SetValue?? JS. - // 2) Arrrrrgh. This isn't needed anywhere, + // 2) Arrrrrgh. This isn't needed anywhere, // of course. One hour of debugging... RR. // // 3) It *is* needed for Motif - michael @@ -1472,7 +1476,7 @@ void wxGenericGrid::OnSelectCellImplementation(wxDC *dc, int row, int col) OnSelectCell(row, col); wxGridEvent g_evt2(GetId(), wxEVT_GRID_SELECT_CELL, this, row, col); - GetEventHandler()->ProcessEvent(g_evt2); + GetEventHandler()->ProcessEvent(g_evt2); } wxGridCell *wxGenericGrid::OnCreateCell(void) @@ -1529,22 +1533,22 @@ void wxGenericGrid::HighlightCell(wxDC *dc) dc->DrawLine( m_currentRect.x + 1, m_currentRect.y + 1, m_currentRect.x + m_currentRect.width - 1, - m_currentRect.y + 1); + m_currentRect.y + 1); // Right dc->DrawLine( m_currentRect.x + m_currentRect.width - 1, m_currentRect.y + 1, m_currentRect.x + m_currentRect.width - 1, - m_currentRect.y +m_currentRect.height - 1 ); + m_currentRect.y +m_currentRect.height - 1 ); // Bottom dc->DrawLine( m_currentRect.x + m_currentRect.width - 1, m_currentRect.y + m_currentRect.height - 1, m_currentRect.x + 1, - m_currentRect.y + m_currentRect.height - 1); + m_currentRect.y + m_currentRect.height - 1); // Left dc->DrawLine( m_currentRect.x + 1, m_currentRect.y + m_currentRect.height - 1, - m_currentRect.x + 1, - m_currentRect.y + 1); + m_currentRect.x + 1, + m_currentRect.y + 1); dc->SetLogicalFunction(wxCOPY); } @@ -2011,8 +2015,8 @@ void wxGenericGrid::SetEditable(bool edit) if (m_inPlaceTextItem) { - m_inPlaceTextItem->Show(TRUE); - m_inPlaceTextItem->SetFocus(); + m_inPlaceTextItem->Show(TRUE); + m_inPlaceTextItem->SetFocus(); } } else @@ -2023,10 +2027,10 @@ void wxGenericGrid::SetEditable(bool edit) m_textItem->Show(FALSE); m_editingPanel->Show(FALSE); } - + if ( m_inPlaceTextItem ) { - m_inPlaceTextItem->Show(FALSE); + m_inPlaceTextItem->Show(FALSE); } } UpdateDimensions(); @@ -2053,37 +2057,37 @@ void wxGenericGrid::SetEditInPlace(bool edit) if ( m_editInPlace != edit ) { m_editInPlace = edit; - + if ( m_editInPlace ) // switched on - { - if ( m_currentRectVisible && m_editable ) - { - m_inPlaceTextItem->SetSize( m_currentRect.x-2, m_currentRect.y-2, - m_currentRect.width+4, m_currentRect.height+4 ); - - wxGridCell *cell = GetCell(m_wCursorRow, m_wCursorColumn); - - if ( cell ) - { - if ( cell->GetTextValue().IsNull() ) - { - m_inPlaceTextItem->SetValue( "" ); - } - else - { - m_inPlaceTextItem->SetFont( cell->GetFont() ); - m_inPlaceTextItem->SetValue( cell->GetTextValue() ); - } - } - - m_inPlaceTextItem->Show( TRUE ); - m_inPlaceTextItem->SetFocus(); - } - } + { + if ( m_currentRectVisible && m_editable ) + { + m_inPlaceTextItem->SetSize( m_currentRect.x-2, m_currentRect.y-2, + m_currentRect.width+4, m_currentRect.height+4 ); + + wxGridCell *cell = GetCell(m_wCursorRow, m_wCursorColumn); + + if ( cell ) + { + if ( cell->GetTextValue().IsNull() ) + { + m_inPlaceTextItem->SetValue( "" ); + } + else + { + m_inPlaceTextItem->SetFont( cell->GetFont() ); + m_inPlaceTextItem->SetValue( cell->GetTextValue() ); + } + } + + m_inPlaceTextItem->Show( TRUE ); + m_inPlaceTextItem->SetFocus(); + } + } else // switched off - { - m_inPlaceTextItem->Show( FALSE ); - } + { + m_inPlaceTextItem->Show( FALSE ); + } } } @@ -2558,30 +2562,49 @@ void wxGenericGrid::OnText(wxCommandEvent& WXUNUSED(ev) ) wxGenericGrid *grid = this; wxGridCell *cell = grid->GetCell(grid->GetCursorRow(), grid->GetCursorColumn()); if (cell && grid->CurrentCellVisible()) - { - cell->SetTextValue(grid->GetTextItem()->GetValue()); - if ( m_editInPlace && !m_inOnTextInPlace ) - { - m_inPlaceTextItem->SetValue( grid->GetTextItem()->GetValue() ); - } - - wxClientDC dc(grid); - - dc.BeginDrawing(); - grid->SetGridClippingRegion(& dc); - grid->DrawCellBackground(& dc, &grid->GetCurrentRect(), grid->GetCursorRow(), grid->GetCursorColumn()); - grid->DrawCellValue(& dc, &grid->GetCurrentRect(), grid->GetCursorRow(), grid->GetCursorColumn()); - if ( !(m_editable && m_editInPlace ) ) grid->HighlightCell(& dc); - dc.DestroyClippingRegion(); - dc.EndDrawing(); - - //grid->OnCellChange(grid->GetCursorRow(), grid->GetCursorColumn()); - wxGridEvent g_evt(GetId(), wxEVT_GRID_CELL_CHANGE, grid, - grid->GetCursorRow(), grid->GetCursorColumn()); - GetEventHandler()->ProcessEvent(g_evt); - - // grid->DrawCellText(); - } + { + cell->SetTextValue(grid->GetTextItem()->GetValue()); + if ( m_editInPlace && !m_inOnTextInPlace ) + { + m_inPlaceTextItem->SetValue( grid->GetTextItem()->GetValue() ); + } + + wxClientDC dc(grid); + + dc.BeginDrawing(); + grid->SetGridClippingRegion(& dc); + grid->DrawCellBackground(& dc, &grid->GetCurrentRect(), grid->GetCursorRow(), grid->GetCursorColumn()); + grid->DrawCellValue(& dc, &grid->GetCurrentRect(), grid->GetCursorRow(), grid->GetCursorColumn()); + if ( !(m_editable && m_editInPlace ) ) grid->HighlightCell(& dc); + dc.DestroyClippingRegion(); + dc.EndDrawing(); + + //grid->OnCellChange(grid->GetCursorRow(), grid->GetCursorColumn()); + wxGridEvent g_evt(GetId(), wxEVT_GRID_CELL_CHANGE, grid, + grid->GetCursorRow(), grid->GetCursorColumn()); + GetEventHandler()->ProcessEvent(g_evt); + + // grid->DrawCellText(); + } + } +} + +void wxGenericGrid::OnTextEnter(wxCommandEvent& WXUNUSED(ev) ) +{ + // move the cursor down the current row (if possible) + // when the enter key has been pressed + // + if ( m_editable ) + { + if ( GetCursorRow() < GetRows()-1 ) + { + wxClientDC dc( this ); + dc.BeginDrawing(); + OnSelectCellImplementation(& dc, + GetCursorRow()+1, + GetCursorColumn() ); + dc.EndDrawing(); + } } } @@ -2592,12 +2615,31 @@ void wxGenericGrid::OnTextInPlace(wxCommandEvent& ev ) wxGenericGrid *grid = this; wxGridCell *cell = grid->GetCell(grid->GetCursorRow(), grid->GetCursorColumn()); if (cell && grid->CurrentCellVisible()) - { - m_inOnTextInPlace = TRUE; - grid->GetTextItem()->SetValue( m_inPlaceTextItem->GetValue() ); - OnText( ev ); - m_inOnTextInPlace = FALSE; - } + { + m_inOnTextInPlace = TRUE; + grid->GetTextItem()->SetValue( m_inPlaceTextItem->GetValue() ); + OnText( ev ); + m_inOnTextInPlace = FALSE; + } + } +} + +void wxGenericGrid::OnTextInPlaceEnter(wxCommandEvent& WXUNUSED(ev) ) +{ + // move the cursor down the current row (if possible) + // when the enter key has been pressed + // + if ( m_editable ) + { + if ( GetCursorRow() < GetRows()-1 ) + { + wxClientDC dc( this ); + dc.BeginDrawing(); + OnSelectCellImplementation(& dc, + GetCursorRow()+1, + GetCursorColumn() ); + dc.EndDrawing(); + } } } @@ -2606,7 +2648,7 @@ void wxGenericGrid::OnGridScroll(wxScrollEvent& ev) static bool inScroll = FALSE; if ( inScroll ) - return; + return; if ( m_editInPlace ) m_inPlaceTextItem->Show(FALSE); @@ -2639,10 +2681,10 @@ void wxGenericGrid::OnGridScroll(wxScrollEvent& ev) if ( m_editInPlace && m_currentRectVisible ) { - m_inPlaceTextItem->SetSize( m_currentRect.x-2, m_currentRect.y-2, - m_currentRect.width+4, m_currentRect.height+4 ); + m_inPlaceTextItem->SetSize( m_currentRect.x-2, m_currentRect.y-2, + m_currentRect.width+4, m_currentRect.height+4 ); m_inPlaceTextItem->Show( TRUE ); - m_inPlaceTextItem->SetFocus(); + m_inPlaceTextItem->SetFocus(); } inScroll = FALSE; diff --git a/src/generic/msgdlgg.cpp b/src/generic/msgdlgg.cpp index 968cd11290..54882a1293 100644 --- a/src/generic/msgdlgg.cpp +++ b/src/generic/msgdlgg.cpp @@ -28,8 +28,7 @@ #include "wx/statbmp.h" #include "wx/layout.h" #include "wx/intl.h" - #include "wx/dcclient.h" - #include "wx/settings.h" + #include "wx/icon.h" #endif #include @@ -169,11 +168,11 @@ wxGenericMessageDialog::wxGenericMessageDialog( wxWindow *parent, // get the longest caption and also calc the number of buttons size_t nBtn, nButtons = 0; - long width, widthBtnMax = 0; + int width, widthBtnMax = 0; for ( nBtn = 0; nBtn < Btn_Max; nBtn++ ) { if ( buttons[nBtn] ) { nButtons++; - dc.GetTextExtent(buttons[nBtn]->GetLabel(), &width, NULL); + GetTextExtent(buttons[nBtn]->GetLabel(), &width, NULL); if ( width > widthBtnMax ) widthBtnMax = width; } diff --git a/src/generic/tipdlg.cpp b/src/generic/tipdlg.cpp index 8ea6f3cf6b..ef44a8057c 100644 --- a/src/generic/tipdlg.cpp +++ b/src/generic/tipdlg.cpp @@ -18,7 +18,7 @@ // ---------------------------------------------------------------------------- #ifdef __GNUG__ - #pragma implementation "windowbase.h" + #pragma implementation "tipdlg.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -36,6 +36,11 @@ #include "wx/statbox.h" #include "wx/statbmp.h" #include "wx/dialog.h" + #include "wx/icon.h" + #include "wx/intl.h" + #include "wx/layout.h" + #include "wx/settings.h" + #include "wx/textctrl.h" #endif // WX_PRECOMP #include "wx/statline.h" @@ -175,7 +180,7 @@ wxTipDialog::wxTipDialog(wxWindow *parent, wxIcon icon("wxICON_TIP"); #else #include "wx/generic/tip.xpm" - wxIcon icon(info); + wxIcon icon(tipIcon); #endif wxStaticBitmap *bmp = new wxStaticBitmap(this, -1, icon); diff --git a/src/gtk/Makefile.am b/src/gtk/Makefile.am index 21d7518267..41d9a0c355 100644 --- a/src/gtk/Makefile.am +++ b/src/gtk/Makefile.am @@ -14,8 +14,6 @@ LIBS = $(GUILIBS) VPATH = .:${srcdir}:${srcdir}/../common:${srcdir}/../generic:${EXTRA_VPATH} -EXTRA_DIST = "${srcdir}/../common ${srcdir}/../generic ${srcdir}" - lib_LTLIBRARIES = @WX_LIBRARY_NAME@ EXTRA_LTLIBRARIES = libwx_gtk.la libwx_motif.la libwx_msw.la diff --git a/src/gtk1/Makefile.am b/src/gtk1/Makefile.am index 21d7518267..41d9a0c355 100644 --- a/src/gtk1/Makefile.am +++ b/src/gtk1/Makefile.am @@ -14,8 +14,6 @@ LIBS = $(GUILIBS) VPATH = .:${srcdir}:${srcdir}/../common:${srcdir}/../generic:${EXTRA_VPATH} -EXTRA_DIST = "${srcdir}/../common ${srcdir}/../generic ${srcdir}" - lib_LTLIBRARIES = @WX_LIBRARY_NAME@ EXTRA_LTLIBRARIES = libwx_gtk.la libwx_motif.la libwx_msw.la diff --git a/src/motif/Makefile.am b/src/motif/Makefile.am index f898f12162..f920cecc9e 100644 --- a/src/motif/Makefile.am +++ b/src/motif/Makefile.am @@ -54,6 +54,7 @@ libwx_motif_la_SOURCES = \ db.cpp \ dbtable.cpp \ dcbase.cpp \ + dlgcmn.cpp \ docmdi.cpp \ docview.cpp \ dynlib.cpp \ @@ -129,6 +130,7 @@ libwx_motif_la_SOURCES = \ statusbr.cpp \ tabg.cpp \ textdlgg.cpp \ + tipdlg.cpp \ treectrl.cpp \ \ threadpsx.cpp \ diff --git a/src/motif/app.cpp b/src/motif/app.cpp index 2ccea798a9..0ccb67f1dd 100644 --- a/src/motif/app.cpp +++ b/src/motif/app.cpp @@ -32,7 +32,7 @@ #include "wx/intl.h" #if wxUSE_THREADS -#include "wx/thread.h" + #include "wx/thread.h" #endif #if wxUSE_WX_RESOURCES diff --git a/src/motif/bmpbuttn.cpp b/src/motif/bmpbuttn.cpp index bf9a57a63f..358149b072 100644 --- a/src/motif/bmpbuttn.cpp +++ b/src/motif/bmpbuttn.cpp @@ -6,7 +6,7 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -45,31 +45,31 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit m_buttonBitmapOriginal = bitmap; m_buttonBitmapSelected = bitmap; m_buttonBitmapSelectedOriginal = bitmap; - + SetName(name); SetValidator(validator); parent->AddChild(this); - + m_backgroundColour = parent->GetBackgroundColour() ; m_foregroundColour = parent->GetForegroundColour() ; m_windowStyle = style; m_marginX = 0; m_marginY = 0; - + /* int x = pos.x; int y = pos.y; int width = size.x; int height = size.y; */ - + if (id == -1) m_windowId = NewControlId(); else m_windowId = id; - + Widget parentWidget = (Widget) parent->GetClientWidget(); - + /* * Patch Note (important) * There is no major reason to put a defaultButtonThickness here. @@ -80,7 +80,7 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit * in the ::SetDefaultButton method. */ Widget buttonWidget = XtVaCreateManagedWidget ("button", - + // Gadget causes problems for default button operation. #if wxUSE_GADGETS xmPushButtonGadgetClass, parentWidget, @@ -89,29 +89,29 @@ bool wxBitmapButton::Create(wxWindow *parent, wxWindowID id, const wxBitmap& bit #endif // XmNdefaultButtonShadowThickness, 1, // See comment for wxButton::SetDefault NULL); - + m_mainWidget = (WXWidget) buttonWidget; - + m_font = parent->GetFont(); ChangeFont(FALSE); - + ChangeBackgroundColour (); - + DoSetBitmap(); - + XtAddCallback (buttonWidget, XmNactivateCallback, (XtCallbackProc) wxButtonCallback, (XtPointer) this); - + SetCanAddEventHandler(TRUE); AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - + return TRUE; } wxBitmapButton::~wxBitmapButton() { SetBitmapLabel(wxNullBitmap); - + if (m_insensPixmap) XmDestroyPixmap (DefaultScreenOfDisplay ((Display*) GetXDisplay()), (Pixmap) m_insensPixmap); } @@ -120,7 +120,7 @@ void wxBitmapButton::SetBitmapLabel(const wxBitmap& bitmap) { m_buttonBitmapOriginal = bitmap; m_buttonBitmap = bitmap; - + DoSetBitmap(); } @@ -128,7 +128,7 @@ void wxBitmapButton::SetBitmapSelected(const wxBitmap& sel) { m_buttonBitmapSelected = sel; m_buttonBitmapSelectedOriginal = sel; - + DoSetBitmap(); }; @@ -142,7 +142,7 @@ void wxBitmapButton::SetBitmapDisabled(const wxBitmap& disabled) { m_buttonBitmapDisabled = disabled; m_buttonBitmapDisabledOriginal = disabled; - + DoSetBitmap(); }; @@ -153,7 +153,7 @@ void wxBitmapButton::DoSetBitmap() Pixmap pixmap = 0; Pixmap insensPixmap = 0; Pixmap armPixmap = 0; - + // Must re-make the bitmap to have its transparent areas drawn // in the current widget background colour. if (m_buttonBitmapOriginal.GetMask()) @@ -161,18 +161,18 @@ void wxBitmapButton::DoSetBitmap() int backgroundPixel; XtVaGetValues((Widget) m_mainWidget, XmNbackground, &backgroundPixel, NULL); - + wxColour col; col.SetPixel(backgroundPixel); - + wxBitmap newBitmap = wxCreateMaskedBitmap(m_buttonBitmapOriginal, col); m_buttonBitmap = newBitmap; - + pixmap = (Pixmap) m_buttonBitmap.GetPixmap(); } else pixmap = (Pixmap) m_buttonBitmap.GetLabelPixmap(m_mainWidget); - + if (m_buttonBitmapDisabledOriginal.Ok()) { if (m_buttonBitmapDisabledOriginal.GetMask()) @@ -180,13 +180,13 @@ void wxBitmapButton::DoSetBitmap() int backgroundPixel; XtVaGetValues((Widget) m_mainWidget, XmNbackground, &backgroundPixel, NULL); - + wxColour col; col.SetPixel(backgroundPixel); - + wxBitmap newBitmap = wxCreateMaskedBitmap(m_buttonBitmapDisabledOriginal, col); m_buttonBitmapDisabled = newBitmap; - + insensPixmap = (Pixmap) m_buttonBitmapDisabled.GetPixmap(); } else @@ -194,7 +194,7 @@ void wxBitmapButton::DoSetBitmap() } else insensPixmap = (Pixmap) m_buttonBitmap.GetInsensPixmap(m_mainWidget); - + // Now make the bitmap representing the armed state if (m_buttonBitmapSelectedOriginal.Ok()) { @@ -203,13 +203,13 @@ void wxBitmapButton::DoSetBitmap() int backgroundPixel; XtVaGetValues((Widget) m_mainWidget, XmNarmColor, &backgroundPixel, NULL); - + wxColour col; col.SetPixel(backgroundPixel); - + wxBitmap newBitmap = wxCreateMaskedBitmap(m_buttonBitmapSelectedOriginal, col); m_buttonBitmapSelected = newBitmap; - + armPixmap = (Pixmap) m_buttonBitmapSelected.GetPixmap(); } else @@ -217,14 +217,14 @@ void wxBitmapButton::DoSetBitmap() } else armPixmap = (Pixmap) m_buttonBitmap.GetArmPixmap(m_mainWidget); - + if (insensPixmap == pixmap) // <- the Get...Pixmap()-functions return the same pixmap! { insensPixmap = XCreateInsensitivePixmap(DisplayOfScreen(XtScreen((Widget) m_mainWidget)), pixmap); m_insensPixmap = (WXPixmap) insensPixmap; } - + XtVaSetValues ((Widget) m_mainWidget, XmNlabelPixmap, pixmap, XmNlabelInsensitivePixmap, insensPixmap, @@ -248,7 +248,7 @@ void wxBitmapButton::DoSetBitmap() void wxBitmapButton::ChangeBackgroundColour() { DoChangeBackgroundColour(m_mainWidget, m_backgroundColour, TRUE); - + // Must reset the bitmaps since the colours have changed. DoSetBitmap(); } diff --git a/src/motif/button.cpp b/src/motif/button.cpp index f48bab4230..ac7c31cfec 100644 --- a/src/motif/button.cpp +++ b/src/motif/button.cpp @@ -6,7 +6,7 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -15,6 +15,7 @@ #include "wx/button.h" #include "wx/utils.h" +#include "wx/panel.h" #include #include @@ -41,21 +42,21 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, m_backgroundColour = parent->GetBackgroundColour(); m_foregroundColour = parent->GetForegroundColour(); m_font = parent->GetFont(); - + parent->AddChild((wxButton *)this); - + if (id == -1) m_windowId = NewControlId(); else m_windowId = id; - + wxString label1(wxStripMenuCodes(label)); - + XmString text = XmStringCreateSimple ((char*) (const char*) label1); Widget parentWidget = (Widget) parent->GetClientWidget(); - + XmFontList fontList = (XmFontList) m_font.GetFontList(1.0, XtDisplay(parentWidget)); - + /* * Patch Note (important) * There is no major reason to put a defaultButtonThickness here. @@ -72,29 +73,27 @@ bool wxButton::Create(wxWindow *parent, wxWindowID id, const wxString& label, XmNlabelString, text, // XmNdefaultButtonShadowThickness, 1, // See comment for wxButton::SetDefault NULL); - + XmStringFree (text); - + XtAddCallback ((Widget) m_mainWidget, XmNactivateCallback, (XtCallbackProc) wxButtonCallback, (XtPointer) this); - + SetCanAddEventHandler(TRUE); AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - + ChangeBackgroundColour(); - + return TRUE; } void wxButton::SetDefault() { - wxWindow *parent = (wxWindow *)GetParent(); -/* - TODO - if (parent) - parent->SetDefaultItem(this); -*/ - + wxWindow *parent = GetParent(); + wxPanel *panel = wxDynamicCast(panel, wxPanel); + if ( panel ) + panel->SetDefaultItem(this); + // We initially do not set XmNdefaultShadowThickness, to have small buttons. // Unfortunately, buttons are now mis-aligned. We try to correct this // now -- setting this ressource to 1 for each button in the same row. @@ -109,16 +108,16 @@ void wxButton::SetDefault() bool managed = XtIsManaged((Widget) item->GetMainWidget()); if (managed) XtUnmanageChild ((Widget) item->GetMainWidget()); - + XtVaSetValues ((Widget) item->GetMainWidget(), XmNdefaultButtonShadowThickness, 1, NULL); - + if (managed) XtManageChild ((Widget) item->GetMainWidget()); } - } // while - + } // while + // XtVaSetValues((Widget)handle, XmNshowAsDefault, 1, NULL); XtVaSetValues ((Widget) parent->GetMainWidget(), XmNdefaultButton, (Widget) GetMainWidget(), NULL); } @@ -133,7 +132,7 @@ void wxButtonCallback (Widget w, XtPointer clientData, XtPointer WXUNUSED(ptr)) if (!wxGetWindowFromTable(w)) // Widget has been deleted! return; - + wxButton *item = (wxButton *) clientData; wxCommandEvent event (wxEVT_COMMAND_BUTTON_CLICKED, item->GetId()); event.SetEventObject(item); diff --git a/src/motif/choice.cpp b/src/motif/choice.cpp index 528d0607f0..cc98f181c3 100644 --- a/src/motif/choice.cpp +++ b/src/motif/choice.cpp @@ -119,10 +119,11 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID id, // that I have found the code responsible for this behaviour. #if XmVersion >= 1002 #if XmVersion < 2000 - Widget optionLabel = XmOptionLabelGadget ((Widget) m_buttonWidget); // JACS, 24/1/99: this seems to cause a malloc crash later on, e.g. // in controls sample. - // XtUnmanageChild (optionLabel); + // + // Widget optionLabel = XmOptionLabelGadget ((Widget) m_buttonWidget); + // XtUnmanageChild (optionLabel); #endif #endif diff --git a/src/motif/clipbrd.cpp b/src/motif/clipbrd.cpp index c5046a0db0..0cc48a40f0 100644 --- a/src/motif/clipbrd.cpp +++ b/src/motif/clipbrd.cpp @@ -14,6 +14,10 @@ #pragma implementation "clipbrd.h" #endif +#include "wx/defs.h" + +#if wxUSE_CLIPBOARD + #include "wx/app.h" #include "wx/frame.h" #include "wx/bitmap.h" @@ -529,3 +533,4 @@ char *wxClipboard::GetClipboardData(char *format, long *length, long time) } #endif +#endif // wxUSE_CLIPBOARD diff --git a/src/motif/control.cpp b/src/motif/control.cpp index 38e35741fa..70fa4f3d3c 100644 --- a/src/motif/control.cpp +++ b/src/motif/control.cpp @@ -6,7 +6,7 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -14,6 +14,7 @@ #endif #include "wx/control.h" +#include "wx/panel.h" #include "wx/utils.h" #include @@ -38,15 +39,12 @@ wxControl::~wxControl() { // If we delete an item, we should initialize the parent panel, // because it could now be invalid. -/* - TODO - wxWindow *parent = (wxWindow *)GetParent(); - if (parent) + wxPanel *panel = wxDynamicCast(GetParent(), wxPanel); + if (panel) { - if (parent->GetDefaultItem() == (wxButton*) this) - parent->SetDefaultItem((wxButton*) NULL); + if (panel->GetDefaultItem() == this) + panel->SetDefaultItem((wxButton*) NULL); } -*/ } void wxControl::SetLabel(const wxString& label) @@ -54,9 +52,9 @@ void wxControl::SetLabel(const wxString& label) Widget widget = (Widget) GetLabelWidget() ; if (!widget) return; - + wxStripMenuCodes((char*) (const char*) label, wxBuffer); - + XmString text = XmStringCreateSimple (wxBuffer); XtVaSetValues (widget, XmNlabelString, text, @@ -70,13 +68,13 @@ wxString wxControl::GetLabel() const Widget widget = (Widget) GetLabelWidget() ; if (!widget) return wxEmptyString; - + XmString text; char *s; XtVaGetValues (widget, XmNlabelString, &text, NULL); - + if (XmStringGetLtoR (text, XmSTRING_DEFAULT_CHARSET, &s)) { wxString str(s); @@ -110,24 +108,24 @@ void wxControl::ProcessCommand (wxCommandEvent & event) void wxControl::Centre (int direction) { int x, y, width, height, panel_width, panel_height, new_x, new_y; - + wxWindow *parent = (wxWindow *) GetParent (); if (!parent) return; - + parent->GetClientSize (&panel_width, &panel_height); GetSize (&width, &height); GetPosition (&x, &y); - + new_x = x; new_y = y; - + if (direction & wxHORIZONTAL) new_x = (int) ((panel_width - width) / 2); - + if (direction & wxVERTICAL) new_y = (int) ((panel_height - height) / 2); - + SetSize (new_x, new_y, width, height); } diff --git a/src/motif/dataobj.cpp b/src/motif/dataobj.cpp index b41b06164e..2fdd9dd815 100644 --- a/src/motif/dataobj.cpp +++ b/src/motif/dataobj.cpp @@ -4,13 +4,17 @@ // Author: Julian Smart // Id: $Id$ // Copyright: (c) 1998 Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ #pragma implementation "dataobj.h" #endif +#include "wx/defs.h" + +#if wxUSE_CLIPBOARD + #include "wx/dataobj.h" #include "wx/app.h" @@ -298,3 +302,4 @@ void wxPrivateDataObject::WriteData( const void *data, void *dest ) const memcpy( dest, data, GetSize() ); } +#endif // wxUSE_CLIPBOARD diff --git a/src/motif/dialog.cpp b/src/motif/dialog.cpp index d298056eb6..72ec1d98da 100644 --- a/src/motif/dialog.cpp +++ b/src/motif/dialog.cpp @@ -6,7 +6,7 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -94,43 +94,43 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, m_windowStyle = style; m_modalShowing = FALSE; m_dialogTitle = title; - + m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); m_foregroundColour = *wxBLACK; - + SetName(name); - + if (!parent) wxTopLevelWindows.Append(this); - + if (parent) parent->AddChild(this); - + if ( id == -1 ) m_windowId = (int)NewControlId(); else m_windowId = id; - + Widget parentWidget = (Widget) 0; if (parent) parentWidget = (Widget) parent->GetTopWidget(); if (!parent) parentWidget = (Widget) wxTheApp->GetTopLevelWidget(); - + wxASSERT_MSG( (parentWidget != (Widget) 0), "Could not find a suitable parent shell for dialog." ); - + Arg args[2]; XtSetArg (args[0], XmNdefaultPosition, False); XtSetArg (args[1], XmNautoUnmanage, False); Widget dialogShell = XmCreateBulletinBoardDialog(parentWidget, (char*) (const char*) name, args, 2); m_mainWidget = (WXWidget) dialogShell; - + // We don't want margins, since there is enough elsewhere. XtVaSetValues(dialogShell, XmNmarginHeight, 0, XmNmarginWidth, 0, XmNresizePolicy, XmRESIZE_NONE, NULL) ; - + Widget shell = XtParent(dialogShell) ; if (!title.IsNull()) { @@ -140,21 +140,21 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, NULL); XmStringFree(str); } - + m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); ChangeFont(FALSE); - + wxAddWindowToTable(dialogShell, this); - + // Intercept CLOSE messages from the window manager Atom WM_DELETE_WINDOW = XmInternAtom(XtDisplay(shell), "WM_DELETE_WINDOW", False); - + /* Remove and add WM_DELETE_WINDOW so ours is only handler */ /* Why do we have to do this for wxDialog, but not wxFrame? */ XmRemoveWMProtocols(shell, &WM_DELETE_WINDOW, 1); XmAddWMProtocols(shell, &WM_DELETE_WINDOW, 1); XmActivateWMProtocol(shell, WM_DELETE_WINDOW); - + // Modified Steve Hammes for Motif 2.0 #if (XmREVISION > 1 || XmVERSION > 1) XmAddWMProtocolCallback(shell, WM_DELETE_WINDOW, (XtCallbackProc) wxCloseDialogCallback, (XtPointer)this); @@ -163,14 +163,14 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, #else XmAddWMProtocolCallback(shell, WM_DELETE_WINDOW, (void (*)())wxCloseDialogCallback, (caddr_t)this); #endif - + XtTranslations ptr ; XtOverrideTranslations(dialogShell, ptr = XtParseTranslationTable(": resize()")); XtFree((char *)ptr); - + // Can't remember what this was about... but I think it's necessary. - + if (wxUSE_INVISIBLE_RESIZE) { if (pos.x > -1) @@ -179,13 +179,13 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, if (pos.y > -1) XtVaSetValues(dialogShell, XmNy, pos.y, NULL); - + if (size.x > -1) XtVaSetValues(dialogShell, XmNwidth, size.x, NULL); if (size.y > -1) XtVaSetValues(dialogShell, XmNheight, size.y, NULL); } - + // This patch come from Torsten Liermann lier@lier1.muc.de if (XmIsMotifWMRunning(shell)) { @@ -204,7 +204,7 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, decor |= MWM_DECOR_MINIMIZE; if (m_windowStyle & wxMAXIMIZE_BOX) decor |= MWM_DECOR_MAXIMIZE; - + XtVaSetValues(shell,XmNmwmDecorations,decor,NULL) ; } // This allows non-Motif window managers to support at least the @@ -214,18 +214,18 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, if ((m_windowStyle & wxCAPTION) != wxCAPTION) XtVaSetValues((Widget) shell,XmNoverrideRedirect,TRUE,NULL); } - + XtRealizeWidget(dialogShell); - + XtAddCallback(dialogShell,XmNunmapCallback, (XtCallbackProc)wxUnmapBulletinBoard,this) ; - + // Positioning of the dialog doesn't work properly unless the dialog // is managed, so we manage without mapping to the screen. // To show, we map the shell (actually it's parent). if (!wxUSE_INVISIBLE_RESIZE) XtVaSetValues(shell, XmNmappedWhenManaged, FALSE, NULL); - + if (!wxUSE_INVISIBLE_RESIZE) { XtManageChild(dialogShell); @@ -233,15 +233,15 @@ bool wxDialog::Create(wxWindow *parent, wxWindowID id, } XtAddEventHandler(dialogShell,ExposureMask,FALSE, wxUniversalRepaintProc, (XtPointer) this); - + XtAddEventHandler(dialogShell, ButtonPressMask | ButtonReleaseMask | PointerMotionMask | KeyPressMask, FALSE, wxDialogBoxEventHandler, (XtPointer)this); - + ChangeBackgroundColour(); - + return TRUE; } @@ -252,7 +252,7 @@ void wxDialog::SetModal(bool flag) else if ( m_windowStyle & wxDIALOG_MODAL ) m_windowStyle -= wxDIALOG_MODAL ; - + wxModelessWindows.DeleteObject(this); if (!flag) wxModelessWindows.Append(this); @@ -263,29 +263,29 @@ wxDialog::~wxDialog() if (m_mainWidget) XtRemoveEventHandler((Widget) m_mainWidget, ExposureMask, FALSE, wxUniversalRepaintProc, (XtPointer) this); - + m_modalShowing = FALSE; if (!wxUSE_INVISIBLE_RESIZE && m_mainWidget) { XtUnmapWidget((Widget) m_mainWidget); } - + wxTopLevelWindows.DeleteObject(this); - + if ( (GetWindowStyleFlag() & wxDIALOG_MODAL) != wxDIALOG_MODAL ) wxModelessWindows.DeleteObject(this); - + // If this is the last top-level window, exit. if (wxTheApp && (wxTopLevelWindows.Number() == 0)) { wxTheApp->SetTopWindow(NULL); - + if (wxTheApp->GetExitOnFrameDelete()) { wxTheApp->ExitMainLoop(); } } - + // This event-flushing code used to be in wxWindow::PostDestroyChildren (wx_dialog.cpp) // but I think this should work, if we destroy the children first. // Note that this might need to be done for wxFrame also. @@ -312,7 +312,7 @@ void wxDialog::OnCharHook(wxKeyEvent& event) wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); cancelEvent.SetEventObject( this ); GetEventHandler()->ProcessEvent(cancelEvent); - + return; } // We didn't process this event. @@ -355,7 +355,7 @@ void wxDialog::SetTitle(const wxString& title) if (!title.IsNull()) { XmString str = XmStringCreateSimple((char*) (const char*) title); - XtVaSetValues((Widget) m_mainWidget, + XtVaSetValues((Widget) m_mainWidget, XmNtitle, (char*) (const char*) title, XmNdialogTitle, str, // Roberto Cocchi XmNiconName, (char*) (const char*) title, @@ -369,35 +369,6 @@ wxString wxDialog::GetTitle() const return m_dialogTitle; } -void wxDialog::Centre(int direction) -{ - int x_offset,y_offset ; - int display_width, display_height; - int width, height, x, y; - wxWindow *parent = GetParent(); - if ((direction & wxCENTER_FRAME) && parent) - { - parent->GetPosition(&x_offset,&y_offset) ; - parent->GetSize(&display_width,&display_height) ; - } - else - { - wxDisplaySize(&display_width, &display_height); - x_offset = 0 ; - y_offset = 0 ; - } - - GetSize(&width, &height); - GetPosition(&x, &y); - - if (direction & wxHORIZONTAL) - x = (int)((display_width - width)/2); - if (direction & wxVERTICAL) - y = (int)((display_height - height)/2); - - SetSize(x+x_offset, y+y_offset, width, height); -} - void wxDialog::Raise() { Window parent_window = XtWindow((Widget) m_mainWidget), @@ -435,16 +406,16 @@ void wxDialog::Lower() bool wxDialog::Show(bool show) { m_isShown = show; - + if (show) { if (!wxUSE_INVISIBLE_RESIZE) XtMapWidget(XtParent((Widget) m_mainWidget)); else - XtManageChild((Widget) m_mainWidget) ; - + XtManageChild((Widget) m_mainWidget) ; + XRaiseWindow(XtDisplay((Widget) m_mainWidget), XtWindow((Widget) m_mainWidget)); - + } else { @@ -452,11 +423,11 @@ bool wxDialog::Show(bool show) XtUnmapWidget(XtParent((Widget) m_mainWidget)); else XtUnmanageChild((Widget) m_mainWidget) ; - + XFlush(XtDisplay((Widget) wxTheApp->GetTopLevelWidget())); XSync(XtDisplay((Widget) wxTheApp->GetTopLevelWidget()), FALSE); } - + return TRUE; } @@ -464,43 +435,43 @@ bool wxDialog::Show(bool show) int wxDialog::ShowModal() { m_windowStyle |= wxDIALOG_MODAL; - + Show(TRUE); - + if (m_modalShowing) return 0; - + wxModalShowingStack.Insert((wxObject *)TRUE); - + m_modalShowing = TRUE; XtAddGrab((Widget) m_mainWidget, TRUE, FALSE); - + XEvent event; - + // Loop until we signal that the dialog should be closed while ((wxModalShowingStack.Number() > 0) && ((int)(wxModalShowingStack.First()->Data()) != 0)) { // XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMAll); - + XtAppNextEvent((XtAppContext) wxTheApp->GetAppContext(), &event); wxTheApp->ProcessXEvent((WXEvent*) &event); } - + // Remove modal dialog flag from stack wxNode *node = wxModalShowingStack.First(); if (node) delete node; - + // Now process all events in case they get sent to a destroyed dialog XSync(XtDisplay((Widget) wxTheApp->GetTopLevelWidget()), FALSE); while (XtAppPending((XtAppContext) wxTheApp->GetAppContext())) { XFlush(XtDisplay((Widget) wxTheApp->GetTopLevelWidget())); XtAppNextEvent((XtAppContext) wxTheApp->GetAppContext(), &event); - + wxTheApp->ProcessXEvent((WXEvent*) &event); } - + // TODO: is it safe to call this, if the dialog may have been deleted // by now? Probably only if we're using delayed deletion of dialogs. return GetReturnCode(); @@ -510,16 +481,16 @@ void wxDialog::EndModal(int retCode) { if (!m_modalShowing) return; - + SetReturnCode(retCode); - + // Strangely, we don't seem to need this now. // XtRemoveGrab((Widget) m_mainWidget); - + Show(FALSE); - + m_modalShowing = FALSE; - + wxNode *node = wxModalShowingStack.First(); if (node) node->SetData((wxObject *)FALSE); @@ -575,12 +546,12 @@ void wxDialog::OnCloseWindow(wxCloseEvent& event) // The default OnCancel (above) simply ends a modal dialog, and hides a modeless dialog. static wxList closing; - + if ( closing.Member(this) ) return; - + closing.Append(this); - + wxCommandEvent cancelEvent(wxEVT_COMMAND_BUTTON_CLICKED, wxID_CANCEL); cancelEvent.SetEventObject( this ); GetEventHandler()->ProcessEvent(cancelEvent); // This may close the dialog @@ -607,29 +578,24 @@ void wxDialog::OnSysColourChanged(wxSysColourChangedEvent& WXUNUSED(event)) Refresh(); } -void wxDialog::Fit() -{ - wxWindow::Fit(); -} - // Handle a close event from the window manager -static void wxCloseDialogCallback( Widget WXUNUSED(widget), XtPointer client_data, +static void wxCloseDialogCallback( Widget WXUNUSED(widget), XtPointer client_data, XmAnyCallbackStruct *WXUNUSED(cbs)) { wxDialog *dialog = (wxDialog *)client_data; wxCloseEvent closeEvent(wxEVT_CLOSE_WINDOW, dialog->GetId()); closeEvent.SetEventObject(dialog); - + // May delete the dialog (with delayed deletion) dialog->GetEventHandler()->ProcessEvent(closeEvent); } -void wxDialogBoxEventHandler (Widget wid, - XtPointer WXUNUSED(client_data), - XEvent* event, - Boolean *continueToDispatch) +void wxDialogBoxEventHandler(Widget wid, + XtPointer WXUNUSED(client_data), + XEvent* event, + Boolean* continueToDispatch) { - wxDialog *dialog = (wxDialog *)wxWidgetHashTable->Get((long)wid); + wxDialog *dialog = (wxDialog *)wxGetWindowFromTable(wid); if (dialog) { wxMouseEvent wxevent(wxEVT_NULL); @@ -667,7 +633,7 @@ void wxDialogBoxEventHandler (Widget wid, { keyEvent.SetEventType(wxEVT_CHAR); dialog->GetEventHandler()->ProcessEvent(keyEvent); - } + } } } } diff --git a/src/motif/filedlg.cpp b/src/motif/filedlg.cpp index ed6a27f875..bb2daaa3cb 100644 --- a/src/motif/filedlg.cpp +++ b/src/motif/filedlg.cpp @@ -36,11 +36,11 @@ IMPLEMENT_CLASS(wxFileDialog, wxDialog) #endif -#define DEFAULT_FILE_SELECTOR_SIZE 0 +#define DEFAULT_FILE_SELECTOR_SIZE 0 // Let Motif defines the size of File // Selector Box (if 1), or fix it to // wxFSB_WIDTH x wxFSB_HEIGHT (if 0) -#define wxFSB_WIDTH 600 +#define wxFSB_WIDTH 600 #define wxFSB_HEIGHT 500 @@ -51,27 +51,27 @@ wxString wxFileSelector(const char *title, { // If there's a default extension specified but no filter, we create a suitable // filter. - + wxString filter2(""); if ( defaultExtension && !filter ) filter2 = wxString("*.") + wxString(defaultExtension) ; else if ( filter ) filter2 = filter; - + wxString defaultDirString; if (defaultDir) defaultDirString = defaultDir; else defaultDirString = ""; - + wxString defaultFilenameString; if (defaultFileName) defaultFilenameString = defaultFileName; else defaultFilenameString = ""; - + wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y)); - + if ( fileDialog.ShowModal() == wxID_OK ) { return fileDialog.GetPath(); @@ -89,11 +89,11 @@ wxString wxFileSelectorEx(const char *title, wxWindow* parent, int x, int y) - + { wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "", defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y)); - + if ( fileDialog.ShowModal() == wxID_OK ) { *defaultFilterIndex = fileDialog.GetFilterIndex(); @@ -106,7 +106,7 @@ wxString wxFileSelectorEx(const char *title, wxString wxFileDialog::m_fileSelectorAnswer = ""; bool wxFileDialog::m_fileSelectorReturned = FALSE; -void wxFileSelCancel( Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), +void wxFileSelCancel( Widget WXUNUSED(fs), XtPointer WXUNUSED(client_data), XmFileSelectionBoxCallbackStruct *WXUNUSED(cbs) ) { wxFileDialog::m_fileSelectorAnswer = ""; @@ -145,11 +145,11 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, static void wxChangeListBoxColours(wxWindow* win, Widget widget) { - win->DoChangeBackgroundColour((WXWidget) widget, *wxWHITE); + wxWindow::DoChangeBackgroundColour((WXWidget) widget, *wxWHITE); // Change colour of the scrolled areas of the listboxes Widget listParent = XtParent (widget); - win->DoChangeBackgroundColour((WXWidget) listParent, *wxWHITE, TRUE); + wxWindow::DoChangeBackgroundColour((WXWidget) listParent, *wxWHITE, TRUE); Widget hsb = (Widget) 0; Widget vsb = (Widget) 0; @@ -157,13 +157,13 @@ static void wxChangeListBoxColours(wxWindow* win, Widget widget) XmNhorizontalScrollBar, &hsb, XmNverticalScrollBar, &vsb, NULL); - + /* TODO: should scrollbars be affected? Should probably have separate * function to change them (by default, taken from wxSystemSettings) */ wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - win->DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE); - win->DoChangeBackgroundColour((WXWidget) vsb, backgroundColour, TRUE); + wxWindow::DoChangeBackgroundColour((WXWidget) hsb, backgroundColour, TRUE); + wxWindow::DoChangeBackgroundColour((WXWidget) vsb, backgroundColour, TRUE); if (hsb) XtVaSetValues (hsb, @@ -178,7 +178,7 @@ static void wxChangeListBoxColours(wxWindow* win, Widget widget) int wxFileDialog::ShowModal() { wxBeginBusyCursor(); - + // static char fileBuf[512]; Widget parentWidget = (Widget) 0; if (m_parent) @@ -187,7 +187,7 @@ int wxFileDialog::ShowModal() } else parentWidget = (Widget) wxTheApp->GetTopLevelWidget(); - + Widget fileSel = XmCreateFileSelectionDialog(parentWidget, "file_selector", NULL, 0); XtUnmanageChild(XmFileSelectionBoxGetChild(fileSel, XmDIALOG_HELP_BUTTON)); @@ -195,18 +195,22 @@ int wxFileDialog::ShowModal() Widget selectionWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_TEXT); Widget dirListWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_DIR_LIST); Widget fileListWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_LIST); + + // code using these vars disabled +#if 0 Widget okWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_OK_BUTTON); Widget applyWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_APPLY_BUTTON); Widget cancelWidget = XmFileSelectionBoxGetChild(fileSel, XmDIALOG_CANCEL_BUTTON); +#endif + - Widget shell = XtParent(fileSel); - + if (!m_message.IsNull()) XtVaSetValues(shell, XmNtitle, (char*) (const char*) m_message, NULL); - + wxString entirePath(""); - + if ((m_dir != "") && (m_fileName != "")) { entirePath = m_dir + wxString("/") + m_fileName; @@ -219,12 +223,12 @@ int wxFileDialog::ShowModal() { entirePath = m_fileName; } - + if (entirePath != "") { XmTextSetString(selectionWidget, (char*) (const char*) entirePath); } - + if (m_wildCard != "") { wxString filter(""); @@ -232,28 +236,28 @@ int wxFileDialog::ShowModal() filter = m_dir + wxString("/") + m_wildCard; else filter = m_wildCard; - + XmTextSetString(filterWidget, (char*) (const char*) filter); XmFileSelectionDoSearch(fileSel, NULL); } - + // Suggested by Terry Gitnick, 16/9/97, because of change in Motif // file selector on Solaris 1.5.1. if ( m_dir != "" ) { XmString thePath = XmStringCreateLtoR ((char*) (const char*) m_dir, XmSTRING_DEFAULT_CHARSET); - + XtVaSetValues (fileSel, XmNdirectory, thePath, NULL); - + XmStringFree(thePath); } - + XtAddCallback(fileSel, XmNcancelCallback, (XtCallbackProc)wxFileSelCancel, (XtPointer)NULL); XtAddCallback(fileSel, XmNokCallback, (XtCallbackProc)wxFileSelOk, (XtPointer)NULL); - + //#if XmVersion > 1000 // I'm not sure about what you mean with XmVersion. // If this is for Motif1.1/Motif1.2, then check XmVersion>=1200 @@ -273,22 +277,23 @@ int wxFileDialog::ShowModal() DoChangeBackgroundColour((WXWidget) filterWidget, *wxWHITE); DoChangeBackgroundColour((WXWidget) selectionWidget, *wxWHITE); - /* For some reason this crashes + // apparently, this provokes a crash +#if 0 DoChangeBackgroundColour((WXWidget) okWidget, m_backgroundColour, TRUE); DoChangeBackgroundColour((WXWidget) cancelWidget, m_backgroundColour, TRUE); DoChangeBackgroundColour((WXWidget) applyWidget, m_backgroundColour, TRUE); - */ +#endif wxChangeListBoxColours(this, dirListWidget); wxChangeListBoxColours(this, fileListWidget); - + XtManageChild(fileSel); m_fileSelectorAnswer = ""; m_fileSelectorReturned = FALSE; - + wxEndBusyCursor(); - + XtAddGrab(XtParent(fileSel), TRUE, FALSE); XEvent event; while (!m_fileSelectorReturned) @@ -296,13 +301,13 @@ int wxFileDialog::ShowModal() XtAppProcessEvent((XtAppContext) wxTheApp->GetAppContext(), XtIMAll); } XtRemoveGrab(XtParent(fileSel)); - + XmUpdateDisplay((Widget) wxTheApp->GetTopLevelWidget()); // Experimental - + // XtDestroyWidget(fileSel); XtUnmapWidget(XtParent(fileSel)); XtDestroyWidget(XtParent(fileSel)); - + // Now process all events, because otherwise // this might remain on the screen XSync(XtDisplay((Widget) wxTheApp->GetTopLevelWidget()), FALSE); @@ -312,11 +317,11 @@ int wxFileDialog::ShowModal() XtAppNextEvent((XtAppContext) wxTheApp->GetAppContext(), &event); XtDispatchEvent(&event); } - + m_path = m_fileSelectorAnswer; m_fileName = wxFileNameFromPath(m_fileSelectorAnswer); m_dir = wxPathOnly(m_path); - + if (m_fileName == "") return wxID_CANCEL; else @@ -328,19 +333,20 @@ static wxString wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent) { char *ext = (char *)extension; - - char prompt[50]; + + wxString prompt; wxString str; if (load) - str = "Load %s file"; + str = _("Load %s file"); else - str = "Save %s file"; - sprintf(prompt, wxGetTranslation(str), what); - - if (*ext == '.') ext++; - char wild[60]; - sprintf(wild, "*.%s", ext); - + str = _("Save %s file"); + prompt.Printf(str, what); + + if (*ext == '.') + ext++; + wxString wild; + wild.Printf("*.%s", ext); + return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); } diff --git a/src/motif/font.cpp b/src/motif/font.cpp index 106415a5b3..4b46312660 100644 --- a/src/motif/font.cpp +++ b/src/motif/font.cpp @@ -6,7 +6,7 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -35,13 +35,13 @@ wxXFont::wxXFont() wxXFont::~wxXFont() { - XFontStruct* fontStruct = (XFontStruct*) m_fontStruct; XmFontList fontList = (XmFontList) m_fontList; - + XmFontListFree (fontList); - + // TODO: why does freeing the font produce a segv??? // Note that XFreeFont wasn't called in wxWin 1.68 either. + // XFontStruct* fontStruct = (XFontStruct*) m_fontStruct; // XFreeFont((Display*) m_display, fontStruct); } @@ -65,7 +65,7 @@ wxFontRefData::wxFontRefData(const wxFontRefData& data) m_weight = data.m_weight; m_underlined = data.m_underlined; m_faceName = data.m_faceName; - + // Don't have to copy actual fonts, because they'll be created // on demand. } @@ -91,7 +91,7 @@ wxFont::wxFont() wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) { Create(pointSize, family, style, weight, underlined, faceName); - + if ( wxTheFontList ) wxTheFontList->Append(this); } @@ -100,16 +100,16 @@ bool wxFont::Create(int pointSize, int family, int style, int weight, bool under { UnRef(); m_refData = new wxFontRefData; - + M_FONTDATA->m_family = family; M_FONTDATA->m_style = style; M_FONTDATA->m_weight = weight; M_FONTDATA->m_pointSize = pointSize; M_FONTDATA->m_underlined = underlined; M_FONTDATA->m_faceName = faceName; - + RealizeResource(); - + return TRUE; } @@ -143,54 +143,54 @@ void wxFont::Unshare() void wxFont::SetPointSize(int pointSize) { Unshare(); - + M_FONTDATA->m_pointSize = pointSize; - + RealizeResource(); } void wxFont::SetFamily(int family) { Unshare(); - + M_FONTDATA->m_family = family; - + RealizeResource(); } void wxFont::SetStyle(int style) { Unshare(); - + M_FONTDATA->m_style = style; - + RealizeResource(); } void wxFont::SetWeight(int weight) { Unshare(); - + M_FONTDATA->m_weight = weight; - + RealizeResource(); } void wxFont::SetFaceName(const wxString& faceName) { Unshare(); - + M_FONTDATA->m_faceName = faceName; - + RealizeResource(); } void wxFont::SetUnderlined(bool underlined) { Unshare(); - + M_FONTDATA->m_underlined = underlined; - + RealizeResource(); } @@ -276,10 +276,10 @@ wxXFont* wxFont::GetInternalFont(double scale, WXDisplay* display) const { if (!Ok()) return (wxXFont*) NULL; - + long intScale = long(scale * 100.0 + 0.5); // key for wxXFont int pointSize = (M_FONTDATA->m_pointSize * 10 * intScale) / 100; - + wxNode* node = M_FONTDATA->m_fonts.First(); while (node) { @@ -288,17 +288,17 @@ wxXFont* wxFont::GetInternalFont(double scale, WXDisplay* display) const return f; node = node->Next(); } - + WXFontStructPtr font = LoadQueryFont(pointSize, M_FONTDATA->m_family, M_FONTDATA->m_style, M_FONTDATA->m_weight, M_FONTDATA->m_underlined); - + if (!font) { // search up and down by stepsize 10 int max_size = pointSize + 20 * (1 + (pointSize/180)); int min_size = pointSize - 20 * (1 + (pointSize/180)); int i; - + // Search for smaller size (approx.) for (i=pointSize-10; !font && i >= 10 && i >= min_size; i -= 10) font = LoadQueryFont(i, M_FONTDATA->m_family, M_FONTDATA->m_style, M_FONTDATA->m_weight, M_FONTDATA->m_underlined); @@ -307,7 +307,7 @@ wxXFont* wxFont::GetInternalFont(double scale, WXDisplay* display) const font = LoadQueryFont(i, M_FONTDATA->m_family, M_FONTDATA->m_style, M_FONTDATA->m_weight, M_FONTDATA->m_underlined); // Try default family if (!font && M_FONTDATA->m_family != wxDEFAULT) - font = LoadQueryFont(pointSize, wxDEFAULT, M_FONTDATA->m_style, + font = LoadQueryFont(pointSize, wxDEFAULT, M_FONTDATA->m_style, M_FONTDATA->m_weight, M_FONTDATA->m_underlined); // Bogus font if (!font) @@ -368,12 +368,12 @@ WXFontStructPtr wxFont::LoadQueryFont(int pointSize, int family, int style, default: xweight = "*"; break; } - + sprintf(wxBuffer, "-*-%s-%s-%s-normal-*-*-%d-*-*-*-*-*-*", xfamily, xweight, xstyle, pointSize); - + Display *dpy = (Display*) wxGetDisplay(); XFontStruct* font = XLoadQueryFont(dpy, wxBuffer); - + return (WXFontStructPtr) font; } diff --git a/src/motif/frame.cpp b/src/motif/frame.cpp index 08cb475d7d..9a57776df7 100644 --- a/src/motif/frame.cpp +++ b/src/motif/frame.cpp @@ -53,9 +53,9 @@ extern wxHashTable *wxWidgetHashTable; void wxCloseFrameCallback(Widget, XtPointer, XmAnyCallbackStruct *cbs); -void wxFrameFocusProc(Widget workArea, XtPointer clientData, +void wxFrameFocusProc(Widget workArea, XtPointer clientData, XmAnyCallbackStruct *cbs); -static void wxFrameMapProc(Widget frameShell, XtPointer clientData, +static void wxFrameMapProc(Widget frameShell, XtPointer clientData, XCrossingEvent * event); extern wxList wxModelessWindows; @@ -92,10 +92,10 @@ wxFrame::wxFrame() m_frameMenuBar = NULL; m_frameStatusBar = NULL; - + m_parent = NULL; m_iconized = FALSE; - + //// Motif-specific m_frameShell = (WXWidget) NULL; m_frameWidget = (WXWidget) NULL;; @@ -115,16 +115,16 @@ bool wxFrame::Create(wxWindow *parent, { if (!parent) wxTopLevelWindows.Append(this); - + SetName(name); - + m_windowStyle = style; m_frameMenuBar = NULL; #if wxUSE_TOOLBAR m_frameToolBar = NULL ; #endif // wxUSE_TOOLBAR m_frameStatusBar = NULL; - + //// Motif-specific m_frameShell = (WXWidget) NULL; m_frameWidget = (WXWidget) NULL;; @@ -132,23 +132,23 @@ bool wxFrame::Create(wxWindow *parent, m_clientArea = (WXWidget) NULL;; m_visibleStatus = TRUE; m_title = ""; - + m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); m_foregroundColour = *wxBLACK; m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - + if ( id > -1 ) m_windowId = id; else m_windowId = (int)NewControlId(); - + if (parent) parent->AddChild(this); - + wxModelessWindows.Append(this); - + int x = pos.x; int y = pos.y; int width = size.x; int height = size.y; - + if (wxTopLevelUsed) // Change suggested by Matthew Flatt m_frameShell = (WXWidget) XtAppCreateShell(name, wxTheApp->GetClassName(), topLevelShellWidgetClass, (Display*) wxGetDisplay(), NULL, 0); @@ -157,30 +157,30 @@ bool wxFrame::Create(wxWindow *parent, m_frameShell = wxTheApp->GetTopLevelWidget(); wxTopLevelUsed = TRUE; } - - XtVaSetValues((Widget) m_frameShell, + + XtVaSetValues((Widget) m_frameShell, // Allows menu to resize XmNallowShellResize, True, XmNdeleteResponse, XmDO_NOTHING, XmNmappedWhenManaged, False, XmNiconic, (style & wxICONIZE) ? TRUE : FALSE, NULL); - + if (!title.IsNull()) - XtVaSetValues((Widget) m_frameShell, + XtVaSetValues((Widget) m_frameShell, XmNtitle, (const char*) title, NULL); - + m_frameWidget = (WXWidget) XtVaCreateManagedWidget("main_window", xmMainWindowWidgetClass, (Widget) m_frameShell, XmNresizePolicy, XmRESIZE_NONE, NULL); - + m_workArea = (WXWidget) XtVaCreateWidget("form", xmFormWidgetClass, (Widget) m_frameWidget, XmNresizePolicy, XmRESIZE_NONE, NULL); - + m_clientArea = (WXWidget) XtVaCreateWidget("client", xmBulletinBoardWidgetClass, (Widget) m_workArea, XmNmarginWidth, 0, @@ -194,33 +194,34 @@ bool wxFrame::Create(wxWindow *parent, XtAddEventHandler((Widget) m_clientArea, ExposureMask,FALSE, wxUniversalRepaintProc, (XtPointer) this); - + XtVaSetValues((Widget) m_frameWidget, XmNworkWindow, (Widget) m_workArea, NULL); - + XtManageChild((Widget) m_clientArea); XtManageChild((Widget) m_workArea); - - wxASSERT_MSG ((wxWidgetHashTable->Get((long)m_workArea) == (wxObject*) NULL), "Widget table clash in frame.cpp") ; - + + wxASSERT_MSG( !wxGetWindowFromTable((Widget)m_workArea), + "Widget table clash in frame.cpp") ; + wxAddWindowToTable((Widget) m_workArea, this); - + XtTranslations ptr ; - + XtOverrideTranslations((Widget) m_workArea, ptr = XtParseTranslationTable(": resize()")); - + XtFree((char *)ptr); - - XtAddCallback((Widget) m_workArea, XmNfocusCallback, + + XtAddCallback((Widget) m_workArea, XmNfocusCallback, (XtCallbackProc)wxFrameFocusProc, (XtPointer)this); - + /* Part of show-&-hide fix */ XtAddEventHandler((Widget) m_frameShell, StructureNotifyMask, False, (XtEventHandler)wxFrameMapProc, (XtPointer)m_workArea); - + if (x > -1) XtVaSetValues((Widget) m_frameShell, XmNx, x, NULL); if (y > -1) @@ -229,11 +230,11 @@ bool wxFrame::Create(wxWindow *parent, XtVaSetValues((Widget) m_frameShell, XmNwidth, width, NULL); if (height > -1) XtVaSetValues((Widget) m_frameShell, XmNheight, height, NULL); - + m_mainWidget = m_frameWidget; - + ChangeFont(FALSE); - + // This patch comes from Torsten Liermann lier@lier1.muc.de if (XmIsMotifWMRunning( (Widget) m_frameShell )) { @@ -264,7 +265,7 @@ bool wxFrame::Create(wxWindow *parent, XtVaSetValues((Widget) m_frameShell,XmNoverrideRedirect,TRUE,NULL); } XtRealizeWidget((Widget) m_frameShell); - + // Intercept CLOSE messages from the window manager Atom WM_DELETE_WINDOW = XmInternAtom(XtDisplay((Widget) m_frameShell), "WM_DELETE_WINDOW", False); #if (XmREVISION > 1 || XmVERSION > 1) @@ -276,16 +277,16 @@ bool wxFrame::Create(wxWindow *parent, XmAddWMProtocolCallback((Widget) m_frameShell, WM_DELETE_WINDOW, (void (*)())wxCloseFrameCallback, (caddr_t)this); #endif #endif - + ChangeBackgroundColour(); - + PreResize(); - + wxSizeEvent sizeEvent(wxSize(width, height), GetId()); sizeEvent.SetEventObject(this); - + GetEventHandler()->ProcessEvent(sizeEvent); - + return TRUE; } @@ -301,7 +302,7 @@ wxFrame::~wxFrame() if (m_frameMenuBar) { m_frameMenuBar->DestroyMenuBar(); - + // Hack to stop core dump on Ultrix, OSF, for some strange reason. #if MOTIF_MENUBAR_DELETE_FIX GetMenuBar()->SetMainWidget((WXWidget) NULL); @@ -309,59 +310,59 @@ wxFrame::~wxFrame() delete m_frameMenuBar; m_frameMenuBar = NULL; } - + wxTopLevelWindows.DeleteObject(this); wxModelessWindows.DeleteObject(this); - + if (m_frameStatusBar) delete m_frameStatusBar; - + DestroyChildren(); - + /* int i; for (i = 0; i < wxMAX_STATUS; i++) if (statusTextWidget[i]) XtDestroyWidget (statusTextWidget[i]); - + if (statusLineForm) XtDestroyWidget (statusLineForm); - + if (statusLineWidget) XtDestroyWidget (statusLineWidget); */ - + if (m_workArea) { wxDeleteWindowFromTable((Widget) m_workArea); - + XtDestroyWidget ((Widget) m_workArea); } - + if (m_frameWidget) { wxDeleteWindowFromTable((Widget) m_frameWidget); XtDestroyWidget ((Widget) m_frameWidget); } - + if (m_frameShell) XtDestroyWidget ((Widget) m_frameShell); - + SetMainWidget((WXWidget) NULL); - + /* Check if it's the last top-level window */ - + if (wxTheApp && (wxTopLevelWindows.Number() == 0)) { wxTheApp->SetTopWindow(NULL); - + if (wxTheApp->GetExitOnFrameDelete()) { // Signal to the app that we're going to close wxTheApp->ExitMainLoop(); } } - + } // Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. @@ -369,7 +370,7 @@ void wxFrame::GetClientSize(int *x, int *y) const { Dimension xx, yy; XtVaGetValues((Widget) m_workArea, XmNwidth, &xx, XmNheight, &yy, NULL); - + if (m_frameStatusBar) { int sbw, sbh; @@ -397,7 +398,7 @@ void wxFrame::GetClientSize(int *x, int *y) const { wxWindow *win = (wxWindow *)node->Data(); hasSubPanel = (win->IsKindOf(CLASSINFO(wxPanel)) && !win->IsKindOf(CLASSINFO(wxDialog))); - + if (hasSubPanel) break; } @@ -408,7 +409,7 @@ void wxFrame::GetClientSize(int *x, int *y) const } } */ - + *x = xx; *y = yy; } @@ -421,7 +422,7 @@ void wxFrame::DoSetClientSize(int width, int height) // main window area, and adding on to the new client area if (width > -1) XtVaSetValues((Widget) m_workArea, XmNwidth, width, NULL); - + if (height > -1) { if (m_frameStatusBar) @@ -441,16 +442,16 @@ void wxFrame::DoSetClientSize(int width, int height) height += tbh; } #endif // wxUSE_TOOLBAR - + XtVaSetValues((Widget) m_workArea, XmNheight, height, NULL); } PreResize(); - + wxSizeEvent sizeEvent(wxSize(width, height), GetId()); sizeEvent.SetEventObject(this); - + GetEventHandler()->ProcessEvent(sizeEvent); - + } void wxFrame::GetSize(int *width, int *height) const @@ -465,7 +466,7 @@ void wxFrame::GetPosition(int *x, int *y) const Window parent_window = XtWindow((Widget) m_frameShell), next_parent = XtWindow((Widget) m_frameShell), root = RootWindowOfScreen(XtScreen((Widget) m_frameShell)); - + // search for the parent that is child of ROOT, because the WM may // reparent twice and notify only the next parent (like FVWM) while (next_parent != root) { @@ -492,14 +493,14 @@ void wxFrame::DoSetSize(int x, int y, int width, int height, int sizeFlags) XtVaSetValues((Widget) m_frameWidget, XmNwidth, width, NULL); if (height > -1) XtVaSetValues((Widget) m_frameWidget, XmNheight, height, NULL); - + if (!(height == -1 && width == -1)) { PreResize(); - + wxSizeEvent sizeEvent(wxSize(width, height), GetId()); sizeEvent.SetEventObject(this); - + GetEventHandler()->ProcessEvent(sizeEvent); } } @@ -508,9 +509,9 @@ bool wxFrame::Show(bool show) { if (!m_frameShell) return wxWindow::Show(show); - + m_visibleStatus = show; /* show-&-hide fix */ - + m_isShown = show; if (show) { XtMapWidget((Widget) m_frameShell); @@ -526,7 +527,7 @@ void wxFrame::Iconize(bool iconize) { if (!iconize) Show(TRUE); - + if (m_frameShell) XtVaSetValues((Widget) m_frameShell, XmNiconic, (Boolean)iconize, NULL); } @@ -535,7 +536,7 @@ void wxFrame::Iconize(bool iconize) void wxFrame::Maximize(bool maximize) { Show(TRUE); - + if (maximize && m_frameShell) XtVaSetValues((Widget) m_frameShell, XmNiconic, FALSE, NULL); } @@ -544,7 +545,7 @@ bool wxFrame::IsIconized() const { if (!m_frameShell) return FALSE; - + Boolean iconic; XtVaGetValues((Widget) m_frameShell, XmNiconic, &iconic, NULL); return iconic; @@ -561,11 +562,11 @@ void wxFrame::SetTitle(const wxString& title) { if (title == m_title) return; - + m_title = title; - + if (!title.IsNull()) - XtVaSetValues((Widget) m_frameShell, + XtVaSetValues((Widget) m_frameShell, XmNtitle, (const char*) title, XmNiconName, (const char*) title, NULL); @@ -574,13 +575,13 @@ void wxFrame::SetTitle(const wxString& title) void wxFrame::SetIcon(const wxIcon& icon) { m_icon = icon; - + if (!m_frameShell) return; - + if (!icon.Ok() || !icon.GetPixmap()) return; - + XtVaSetValues((Widget) m_frameShell, XtNiconPixmap, icon.GetPixmap(), NULL); } @@ -588,21 +589,21 @@ wxStatusBar *wxFrame::OnCreateStatusBar(int number, long style, wxWindowID id, const wxString& name) { wxStatusBar *statusBar = NULL; - + statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name); - + // Set the height according to the font and the border size wxClientDC dc(statusBar); dc.SetFont(statusBar->GetFont()); - + long x, y; dc.GetTextExtent("X", &x, &y); - + int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - + statusBar->SetSize(-1, -1, 100, height); - + statusBar->SetFieldsCount(number); return statusBar; } @@ -611,9 +612,9 @@ wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, const wxString& name) { // Calling CreateStatusBar twice is an error. - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, + wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" ); - + m_frameStatusBar = OnCreateStatusBar(number, style, id, name); if ( m_frameStatusBar ) @@ -628,14 +629,14 @@ wxStatusBar* wxFrame::CreateStatusBar(int number, long style, wxWindowID id, void wxFrame::SetStatusText(const wxString& text, int number) { wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - + m_frameStatusBar->SetStatusText(text, number); } void wxFrame::SetStatusWidths(int n, const int widths_field[]) { wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - + m_frameStatusBar->SetStatusWidths(n, widths_field); PositionStatusBar(); } @@ -644,12 +645,12 @@ void wxFrame::PositionStatusBar() { if (!m_frameStatusBar) return; - + int w, h; GetClientSize(&w, &h); int sw, sh; m_frameStatusBar->GetSize(&sw, &sh); - + // Since we wish the status bar to be directly under the client area, // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. m_frameStatusBar->SetSize(0, h, w, sh); @@ -670,16 +671,16 @@ void wxFrame::SetMenuBar(wxMenuBar *menuBar) m_frameMenuBar = NULL; return; } - + // Currently can't set it twice // wxASSERT_MSG( (m_frameMenuBar == (wxMenuBar*) NULL), "Cannot set the menubar more than once"); - + if (m_frameMenuBar) { m_frameMenuBar->DestroyMenuBar(); delete m_frameMenuBar; } - + m_frameMenuBar = menuBar; m_frameMenuBar->CreateMenuBar(this); } @@ -694,7 +695,7 @@ void wxFrame::Fit() { // Find a child that's a subwindow, but not a dialog box. wxWindow *win = (wxWindow *)node->Data(); - + if (!win->IsKindOf(CLASSINFO(wxFrame)) && !win->IsKindOf(CLASSINFO(wxDialog))) { @@ -702,7 +703,7 @@ void wxFrame::Fit() int x, y; win->GetSize(&width, &height); win->GetPosition(&x, &y); - + if ((x + width) > max_width) max_width = x + width; if ((y + height) > max_height) @@ -718,14 +719,14 @@ void wxFrame::OnSysColourChanged(wxSysColourChangedEvent& event) { SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); Refresh(); - + if ( m_frameStatusBar ) { wxSysColourChangedEvent event2; event2.SetEventObject( m_frameStatusBar ); m_frameStatusBar->ProcessEvent(event2); } - + // Propagate the event to the non-top-level children wxWindow::OnSysColourChanged(event); } @@ -741,14 +742,14 @@ void wxFrame::OnSize(wxSizeEvent& event) return; } #endif - + // do we have _exactly_ one child? wxWindow *child = NULL; for ( wxNode *node = GetChildren().First(); node; node = node->Next() ) { wxWindow *win = (wxWindow *)node->Data(); if ( !win->IsKindOf(CLASSINFO(wxFrame)) && - !win->IsKindOf(CLASSINFO(wxDialog)) && + !win->IsKindOf(CLASSINFO(wxDialog)) && (win != GetStatusBar()) #if wxUSE_TOOLBAR && (win != GetToolBar()) @@ -760,15 +761,15 @@ void wxFrame::OnSize(wxSizeEvent& event) child = win; } } - + if ( child ) { // we have exactly one child - set it's size to fill the whole frame int clientW, clientH; GetClientSize(&clientW, &clientH); - + int x = 0; int y = 0; - + child->SetSize(x, y, clientW, clientH); } } @@ -835,15 +836,15 @@ void wxFrame::Centre(int direction) { int display_width, display_height, width, height, x, y; wxDisplaySize(&display_width, &display_height); - + GetSize(&width, &height); GetPosition(&x, &y); - + if (direction & wxHORIZONTAL) x = (int)((display_width - width)/2); if (direction & wxVERTICAL) y = (int)((display_height - height)/2); - + SetSize(x, y, width, height); } @@ -885,7 +886,7 @@ wxPoint wxFrame::GetClientAreaOrigin() const { int w, h; GetToolBar()->GetSize(& w, & h); - + if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) { pt.x += w; @@ -903,7 +904,7 @@ wxPoint wxFrame::GetClientAreaOrigin() const void wxFrame::ScreenToClient(int *x, int *y) const { wxWindow::ScreenToClient(x, y); - + // We may be faking the client origin. // So a window that's really at (0, 30) may appear // (to wxWin apps) to be at (0, 0). @@ -920,7 +921,7 @@ void wxFrame::ClientToScreen(int *x, int *y) const wxPoint pt1(GetClientAreaOrigin()); *x += pt1.x; *y += pt1.y; - + wxWindow::ClientToScreen(x, y); } @@ -929,7 +930,7 @@ wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& nam { wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" ); - + wxToolBar* toolBar = OnCreateToolBar(style, id, name); if (toolBar) { @@ -961,14 +962,14 @@ wxToolBar *wxFrame::GetToolBar() const void wxFrame::PositionToolBar() { int cw, ch; - + GetClientSize(& cw, &ch); - + if (GetToolBar()) { int tw, th; GetToolBar()->GetSize(& tw, & th); - + if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) { // Use the 'real' position. wxSIZE_NO_ADJUSTMENTS @@ -989,7 +990,7 @@ void wxFrame::CaptureMouse() { if (m_winCaptured) return; - + if (GetMainWidget()) XtAddGrab((Widget) m_frameShell, TRUE, FALSE); m_winCaptured = TRUE; @@ -999,7 +1000,7 @@ void wxFrame::ReleaseMouse() { if (!m_winCaptured) return; - + if (GetMainWidget()) XtRemoveGrab((Widget) m_frameShell); m_winCaptured = FALSE; @@ -1039,25 +1040,24 @@ void wxFrame::Lower(void) XLowerWindow(XtDisplay((Widget) m_frameShell), parent_window); } -void wxFrameFocusProc(Widget workArea, XtPointer clientData, +void wxFrameFocusProc(Widget workArea, XtPointer clientData, XmAnyCallbackStruct *cbs) { - wxFrame *frame = (wxFrame *)clientData; - // wxDebugMsg("focus proc from frame %ld\n",(long)frame); // TODO - // frame->GetEventHandler()->OnSetFocus(); + // wxFrame *frame = (wxFrame *)clientData; + // frame->GetEventHandler()->OnSetFocus(); } /* MATTEW: Used to insure that hide-&-show within an event cycle works */ -static void wxFrameMapProc(Widget frameShell, XtPointer clientData, +static void wxFrameMapProc(Widget frameShell, XtPointer clientData, XCrossingEvent * event) { - wxFrame *frame = (wxFrame *)wxWidgetHashTable->Get((long)clientData); - + wxFrame *frame = (wxFrame *)wxGetWindowFromTable((Widget)clientData); + if (frame) { XEvent *e = (XEvent *)event; - + if (e->xany.type == MapNotify) { // Iconize fix @@ -1109,10 +1109,10 @@ void wxFrame::ChangeForegroundColour() void wxCloseFrameCallback(Widget widget, XtPointer client_data, XmAnyCallbackStruct *cbs) { wxFrame *frame = (wxFrame *)client_data; - + wxCloseEvent closeEvent(wxEVT_CLOSE_WINDOW, frame->GetId()); closeEvent.SetEventObject(frame); - + // May delete the frame (with delayed deletion) frame->GetEventHandler()->ProcessEvent(closeEvent); } diff --git a/src/motif/mdi.cpp b/src/motif/mdi.cpp index 57786a54b9..b5b7a97d1a 100644 --- a/src/motif/mdi.cpp +++ b/src/motif/mdi.cpp @@ -6,7 +6,7 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -33,7 +33,7 @@ extern wxList wxModelessWindows; // Implemented in frame.cpp -extern void wxFrameFocusProc(Widget workArea, XtPointer clientData, +extern void wxFrameFocusProc(Widget workArea, XtPointer clientData, XmAnyCallbackStruct *cbs); #define wxID_NOTEBOOK_CLIENT_AREA wxID_HIGHEST + 100 @@ -76,19 +76,19 @@ bool wxMDIParentFrame::Create(wxWindow *parent, m_clientWindow = (wxMDIClientWindow*) NULL; m_activeChild = (wxMDIChildFrame*) NULL; m_activeMenuBar = (wxMenuBar*) NULL; - + bool success = wxFrame::Create(parent, id, title, pos, size, style, name); if (success) { // TODO: app cannot override OnCreateClient since // wxMDIParentFrame::OnCreateClient will still be called // (we're in the constructor). How to resolve? - + m_clientWindow = OnCreateClient(); - + // Uses own style for client style m_clientWindow->CreateClient(this, GetWindowStyleFlag()); - + int w, h; GetClientSize(& w, & h); m_clientWindow->SetSize(0, 0, w, h); @@ -102,9 +102,9 @@ wxMDIParentFrame::~wxMDIParentFrame() { // Make sure we delete the client window last of all RemoveChild(m_clientWindow); - + DestroyChildren(); - + delete m_clientWindow; m_clientWindow = NULL; } @@ -112,7 +112,7 @@ wxMDIParentFrame::~wxMDIParentFrame() void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) { m_frameMenuBar = menu_bar; - + SetChildMenuBar((wxMDIChildFrame*) NULL); } @@ -126,7 +126,7 @@ void wxMDIParentFrame::OnSize(wxSizeEvent& event) int y = 0; int width, height; GetClientSize(&width, &height); - + if ( GetClientWindow() ) GetClientWindow()->SetSize(x, y, width, height); } @@ -158,14 +158,14 @@ wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() void wxMDIParentFrame::SetChildMenuBar(wxMDIChildFrame* child) { wxMenuBar* oldMenuBar = m_activeMenuBar; - + if (child == (wxMDIChildFrame*) NULL) // No child: use parent frame { if (GetMenuBar() && (GetMenuBar() != m_activeMenuBar)) { // if (m_activeMenuBar) // m_activeMenuBar->DestroyMenuBar(); - + m_activeMenuBar = GetMenuBar(); m_activeMenuBar->CreateMenuBar(this); /* @@ -174,7 +174,7 @@ void wxMDIParentFrame::SetChildMenuBar(wxMDIChildFrame* child) */ if (oldMenuBar && oldMenuBar->GetMainWidget()) XtUnmapWidget((Widget) oldMenuBar->GetMainWidget()); - + } } else if (child->GetMenuBar() == (wxMenuBar*) NULL) // No child menu bar: use parent frame @@ -199,7 +199,7 @@ void wxMDIParentFrame::SetChildMenuBar(wxMDIChildFrame* child) { // if (m_activeMenuBar) // m_activeMenuBar->DestroyMenuBar(); - + m_activeMenuBar = child->GetMenuBar(); m_activeMenuBar->CreateMenuBar(this); /* @@ -219,20 +219,20 @@ bool wxMDIParentFrame::ProcessEvent(wxEvent& event) static wxEventType inEvent = wxEVT_NULL; if (inEvent == event.GetEventType()) return FALSE; - + inEvent = event.GetEventType(); - + bool res = FALSE; if (m_activeChild && event.IsKindOf(CLASSINFO(wxCommandEvent))) { res = m_activeChild->GetEventHandler()->ProcessEvent(event); } - + if (!res) res = GetEventHandler()->wxEvtHandler::ProcessEvent(event); - + inEvent = wxEVT_NULL; - + return res; } @@ -252,7 +252,7 @@ void wxMDIParentFrame::DoSetClientSize(int width, int height) void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) { // TODO - + // Propagate the event to the non-top-level children wxFrame::OnSysColourChanged(event); } @@ -299,31 +299,31 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, const wxString& name) { SetName(name); - + m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); m_foregroundColour = *wxBLACK; m_font = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT); - + if ( id > -1 ) m_windowId = id; else m_windowId = (int)NewControlId(); - + wxMDIClientWindow* clientWindow = parent->GetClientWindow(); - + wxASSERT_MSG( (clientWindow != (wxWindow*) NULL), "Missing MDI client window."); - + if (clientWindow) clientWindow->AddChild(this); - + SetMDIParentFrame(parent); - - int x = pos.x; int y = pos.y; - int width = size.x; int height = size.y; + + int width = size.x; + int height = size.y; if (width == -1) width = 200; // TODO: give reasonable default if (height == -1) height = 200; // TODO: give reasonable default - + // We're deactivating the old child wxMDIChildFrame* oldActiveChild = parent->GetActiveChild(); if (oldActiveChild) @@ -332,13 +332,13 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, event.SetEventObject( oldActiveChild ); oldActiveChild->GetEventHandler()->ProcessEvent(event); } - + // This is the currently active child parent->SetActiveChild((wxMDIChildFrame*) this); - + // This time we'll try a bog-standard bulletin board for // the 'frame'. A main window doesn't seem to work. - + m_mainWidget = (WXWidget) XtVaCreateWidget("client", xmBulletinBoardWidgetClass, (Widget) clientWindow->GetTopWidget(), XmNmarginWidth, 0, @@ -354,22 +354,22 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, XtAddEventHandler((Widget) m_mainWidget, ExposureMask,FALSE, wxUniversalRepaintProc, (XtPointer) this); - + SetCanAddEventHandler(TRUE); AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y); - - ChangeBackgroundColour(); - + + ChangeBackgroundColour(); + XtManageChild((Widget) m_mainWidget); - + SetTitle(title); - + clientWindow->AddPage(this, title, TRUE); clientWindow->Refresh(); - + // Positions the toolbar and status bar -- but we don't have any. // PreResize(); - + wxModelessWindows.Append(this); return TRUE; } @@ -380,19 +380,19 @@ wxMDIChildFrame::~wxMDIChildFrame() if (m_mainWidget) XtRemoveEventHandler((Widget) m_mainWidget, ExposureMask,FALSE, wxUniversalRepaintProc, (XtPointer) this); - + if (GetMDIParentFrame()) { wxMDIParentFrame* parentFrame = GetMDIParentFrame(); - + if (parentFrame->GetActiveChild() == this) parentFrame->SetActiveChild((wxMDIChildFrame*) NULL); wxMDIClientWindow* clientWindow = parentFrame->GetClientWindow(); - + // Remove page if still there if (clientWindow->RemovePage(this)) clientWindow->Refresh(); - + // Set the selection to the first remaining page if (clientWindow->GetPageCount() > 0) { @@ -415,14 +415,14 @@ void wxMDIChildFrame::OnRaise() wxMDIParentFrame* parentFrame = (wxMDIParentFrame*) GetParent() ; wxMDIChildFrame* oldActiveChild = parentFrame->GetActiveChild(); parentFrame->SetActiveChild(this); - + if (oldActiveChild) { wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId()); event.SetEventObject( oldActiveChild ); oldActiveChild->GetEventHandler()->ProcessEvent(event); } - + wxActivateEvent event(wxEVT_ACTIVATE, TRUE, this->GetId()); event.SetEventObject( this ); this->GetEventHandler()->ProcessEvent(event); @@ -432,7 +432,7 @@ void wxMDIChildFrame::OnLower() { wxMDIParentFrame* parentFrame = (wxMDIParentFrame*) GetParent() ; wxMDIChildFrame* oldActiveChild = parentFrame->GetActiveChild(); - + if (oldActiveChild == this) { wxActivateEvent event(wxEVT_ACTIVATE, FALSE, oldActiveChild->GetId()); @@ -483,7 +483,7 @@ void wxMDIChildFrame::SetMenuBar(wxMenuBar *menuBar) // Don't create the underlying menubar yet; need to recreate // it every time the child is activated. m_frameMenuBar = menuBar; - + // We make the assumption that if you're setting the menubar, // this is the currently active child. GetMDIParentFrame()->SetChildMenuBar(this); @@ -495,7 +495,7 @@ void wxMDIChildFrame::SetIcon(const wxIcon& icon) m_icon = icon; if (m_icon.Ok()) { - // Not appropriate since there are no icons in + // Not appropriate since there are no icons in // a tabbed window } } @@ -577,7 +577,7 @@ wxMDIClientWindow::~wxMDIClientWindow() // By the time this destructor is called, the child frames will have been // deleted and removed from the notebook/client window. DestroyChildren(); - + m_mainWidget = (WXWidget) 0; } @@ -585,7 +585,7 @@ bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) { // m_windowParent = parent; // m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); - + bool success = wxNotebook::Create(parent, wxID_NOTEBOOK_CLIENT_AREA, wxPoint(0, 0), wxSize(100, 100), 0); if (success) { @@ -653,7 +653,7 @@ void wxMDIClientWindow::OnPageChanged(wxNotebookEvent& event) wxActivateEvent event(wxEVT_ACTIVATE, TRUE, activeChild->GetId()); event.SetEventObject( activeChild ); activeChild->GetEventHandler()->ProcessEvent(event); - + if (activeChild->GetMDIParentFrame()) { activeChild->GetMDIParentFrame()->SetActiveChild(activeChild); diff --git a/src/motif/region.cpp b/src/motif/region.cpp index d4ced6405d..a939adba66 100644 --- a/src/motif/region.cpp +++ b/src/motif/region.cpp @@ -3,7 +3,7 @@ // Purpose: Region class // Author: Markus Holzem/Julian Smart // Created: Fri Oct 24 10:46:34 MET 1997 -// RCS-ID: $Id$ +// RCS-ID: $Id$ // Copyright: (c) 1997 Markus Holzem/Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -19,8 +19,8 @@ // #include "wx/motif/private.h" #if !USE_SHARED_LIBRARY - IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) - IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) + IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) + IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) #endif //----------------------------------------------------------------------------- @@ -29,21 +29,21 @@ class WXDLLEXPORT wxRegionRefData : public wxGDIRefData { public: - wxRegionRefData() - { - m_region = XCreateRegion(); - } - - wxRegionRefData(const wxRegionRefData& data) - { - m_region = XCreateRegion(); - XUnionRegion(m_region, data.m_region, m_region); - } - - ~wxRegionRefData() - { - XDestroyRegion(m_region); - } + wxRegionRefData() + { + m_region = XCreateRegion(); + } + + wxRegionRefData(const wxRegionRefData& data) + { + m_region = XCreateRegion(); + XUnionRegion(m_region, data.m_region, m_region); + } + + ~wxRegionRefData() + { + XDestroyRegion(m_region); + } Region m_region; }; @@ -64,24 +64,24 @@ wxRegion::wxRegion(long x, long y, long w, long h) { m_refData = new wxRegionRefData; - XRectangle rect; - rect.x = x; - rect.y = y; - rect.width = w; - rect.height = h; - XUnionRectWithRegion(&rect, M_REGION, M_REGION); + XRectangle rect; + rect.x = x; + rect.y = y; + rect.width = w; + rect.height = h; + XUnionRectWithRegion(&rect, M_REGION, M_REGION); } wxRegion::wxRegion(const wxPoint& topLeft, const wxPoint& bottomRight) { m_refData = new wxRegionRefData; - XRectangle rect; - rect.x = topLeft.x; - rect.y = topLeft.y; - rect.width = bottomRight.x - topLeft.x; - rect.height = bottomRight.y - topLeft.y; - XUnionRectWithRegion(&rect, M_REGION, M_REGION); + XRectangle rect; + rect.x = topLeft.x; + rect.y = topLeft.y; + rect.width = bottomRight.x - topLeft.x; + rect.height = bottomRight.y - topLeft.y; + XUnionRectWithRegion(&rect, M_REGION, M_REGION); } wxRegion::wxRegion(const wxRect& rect) @@ -89,9 +89,9 @@ wxRegion::wxRegion(const wxRect& rect) m_refData = new wxRegionRefData; XRectangle rect1; - rect1.x = rect.x; - rect1.y = rect.y; - rect1.width = rect.width; + rect1.x = rect.x; + rect1.y = rect.y; + rect1.width = rect.width; rect1.height = rect.height; XUnionRectWithRegion(&rect1, M_REGION, M_REGION); } @@ -125,33 +125,32 @@ void wxRegion::Clear() //! Combine rectangle (x, y, w, h) with this. bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) { - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } + // Don't change shared data + if (!m_refData) { + m_refData = new wxRegionRefData(); + } else if (m_refData->GetRefCount() > 1) { + wxRegionRefData* ref = (wxRegionRefData*)m_refData; + UnRef(); + m_refData = new wxRegionRefData(*ref); + } // If ref count is 1, that means it's 'ours' anyway so no action. Region rectRegion = XCreateRegion(); - XRectangle rect; - rect.x = x; - rect.y = y; - rect.width = width; - rect.height = height; - XUnionRectWithRegion(&rect, rectRegion, rectRegion); + XRectangle rect; + rect.x = x; + rect.y = y; + rect.width = width; + rect.height = height; + XUnionRectWithRegion(&rect, rectRegion, rectRegion); - int mode = 0; // TODO platform-specific code switch (op) { case wxRGN_AND: - XIntersectRegion(M_REGION, rectRegion, M_REGION); + XIntersectRegion(M_REGION, rectRegion, M_REGION); break ; case wxRGN_OR: - XUnionRegion(M_REGION, rectRegion, M_REGION); + XUnionRegion(M_REGION, rectRegion, M_REGION); break ; case wxRGN_XOR: // TODO @@ -171,28 +170,27 @@ bool wxRegion::Combine(long x, long y, long width, long height, wxRegionOp op) //! Union /e region with this. bool wxRegion::Combine(const wxRegion& region, wxRegionOp op) { - if (region.Empty()) - return FALSE; - - // Don't change shared data - if (!m_refData) { - m_refData = new wxRegionRefData(); - } else if (m_refData->GetRefCount() > 1) { - wxRegionRefData* ref = (wxRegionRefData*)m_refData; - UnRef(); - m_refData = new wxRegionRefData(*ref); - } - - int mode = 0; // TODO platform-specific code + if (region.Empty()) + return FALSE; + + // Don't change shared data + if (!m_refData) { + m_refData = new wxRegionRefData(); + } else if (m_refData->GetRefCount() > 1) { + wxRegionRefData* ref = (wxRegionRefData*)m_refData; + UnRef(); + m_refData = new wxRegionRefData(*ref); + } + switch (op) { case wxRGN_AND: - XIntersectRegion(M_REGION, ((wxRegionRefData*)region.m_refData)->m_region, - M_REGION); + XIntersectRegion(M_REGION, ((wxRegionRefData*)region.m_refData)->m_region, + M_REGION); break ; case wxRGN_OR: - XUnionRegion(M_REGION, ((wxRegionRefData*)region.m_refData)->m_region, - M_REGION); + XUnionRegion(M_REGION, ((wxRegionRefData*)region.m_refData)->m_region, + M_REGION); break ; case wxRGN_XOR: // TODO @@ -221,16 +219,16 @@ bool wxRegion::Combine(const wxRect& rect, wxRegionOp op) // Outer bounds of region void wxRegion::GetBox(long& x, long& y, long&w, long &h) const { - if (m_refData) { - XRectangle rect; - XClipBox(M_REGION, &rect); - x = rect.x; - y = rect.y; - w = rect.width; - h = rect.height; - } else { - x = y = w = h = 0; - } + if (m_refData) { + XRectangle rect; + XClipBox(M_REGION, &rect); + x = rect.x; + y = rect.y; + w = rect.width; + h = rect.height; + } else { + x = y = w = h = 0; + } } wxRect wxRegion::GetBox() const @@ -243,7 +241,7 @@ wxRect wxRegion::GetBox() const // Is region empty? bool wxRegion::Empty() const { - return m_refData ? XEmptyRegion(M_REGION) : TRUE; + return m_refData ? XEmptyRegion(M_REGION) : TRUE; } //----------------------------------------------------------------------------- @@ -253,8 +251,8 @@ bool wxRegion::Empty() const // Does the region contain the point (x,y)? wxRegionContain wxRegion::Contains(long x, long y) const { - if (!m_refData) - return wxOutRegion; + if (!m_refData) + return wxOutRegion; // TODO. Return wxInRegion if within region. if (0) @@ -265,30 +263,30 @@ wxRegionContain wxRegion::Contains(long x, long y) const // Does the region contain the point pt? wxRegionContain wxRegion::Contains(const wxPoint& pt) const { - if (!m_refData) - return wxOutRegion; + if (!m_refData) + return wxOutRegion; - return XPointInRegion(M_REGION, pt.x, pt.y) ? wxInRegion : wxOutRegion; + return XPointInRegion(M_REGION, pt.x, pt.y) ? wxInRegion : wxOutRegion; } // Does the region contain the rectangle (x, y, w, h)? wxRegionContain wxRegion::Contains(long x, long y, long w, long h) const { - if (!m_refData) - return wxOutRegion; - - switch (XRectInRegion(M_REGION, x, y, w, h)) { - case RectangleIn: return wxInRegion; - case RectanglePart: return wxPartRegion; - } - return wxOutRegion; + if (!m_refData) + return wxOutRegion; + + switch (XRectInRegion(M_REGION, x, y, w, h)) { + case RectangleIn: return wxInRegion; + case RectanglePart: return wxPartRegion; + } + return wxOutRegion; } // Does the region contain the rectangle rect wxRegionContain wxRegion::Contains(const wxRect& rect) const { - if (!m_refData) - return wxOutRegion; + if (!m_refData) + return wxOutRegion; long x, y, w, h; x = rect.x; @@ -299,9 +297,9 @@ wxRegionContain wxRegion::Contains(const wxRect& rect) const } /////////////////////////////////////////////////////////////////////////////// -// // -// wxRegionIterator // -// // +// // +// wxRegionIterator // +// // /////////////////////////////////////////////////////////////////////////////// /*! @@ -324,7 +322,7 @@ wxRegionIterator::wxRegionIterator(const wxRegion& region) { m_rects = NULL; - Reset(region); + Reset(region); } /*! @@ -332,17 +330,17 @@ wxRegionIterator::wxRegionIterator(const wxRegion& region) */ void wxRegionIterator::Reset(const wxRegion& region) { - m_current = 0; - m_region = region; + m_current = 0; + m_region = region; if (m_rects) delete[] m_rects; m_rects = NULL; - if (m_region.Empty()) - m_numRects = 0; - else + if (m_region.Empty()) + m_numRects = 0; + else { // TODO create m_rects and fill with rectangles for this region m_numRects = 0; @@ -355,8 +353,8 @@ void wxRegionIterator::Reset(const wxRegion& region) */ void wxRegionIterator::operator ++ () { - if (m_current < m_numRects) - ++m_current; + if (m_current < m_numRects) + ++m_current; } /*! @@ -365,35 +363,35 @@ void wxRegionIterator::operator ++ () */ void wxRegionIterator::operator ++ (int) { - if (m_current < m_numRects) - ++m_current; + if (m_current < m_numRects) + ++m_current; } long wxRegionIterator::GetX() const { - if (m_current < m_numRects) - return m_rects[m_current].x; - return 0; + if (m_current < m_numRects) + return m_rects[m_current].x; + return 0; } long wxRegionIterator::GetY() const { - if (m_current < m_numRects) - return m_rects[m_current].y; - return 0; + if (m_current < m_numRects) + return m_rects[m_current].y; + return 0; } long wxRegionIterator::GetW() const { - if (m_current < m_numRects) - return m_rects[m_current].width ; - return 0; + if (m_current < m_numRects) + return m_rects[m_current].width ; + return 0; } long wxRegionIterator::GetH() const { - if (m_current < m_numRects) - return m_rects[m_current].height; - return 0; + if (m_current < m_numRects) + return m_rects[m_current].height; + return 0; } -- 2.47.2