From f5368809947ac5bf4c2b956b5519e5bc51375f53 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sun, 15 Nov 1998 15:29:28 +0000 Subject: [PATCH] Coompilation fixes for GTK 1.1.3 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@999 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/dcclient.cpp | 1 + src/gtk/dnd.cpp | 237 ++++++++++++++++++++++++++++++ src/gtk/frame.cpp | 332 +++++++++++++++++++++--------------------- src/gtk/scrolbar.cpp | 1 + src/gtk/slider.cpp | 1 + src/gtk/spinbutt.cpp | 1 + src/gtk/textctrl.cpp | 12 +- src/gtk/win_gtk.c | 6 +- src/gtk/window.cpp | 32 ++++ src/gtk1/dcclient.cpp | 1 + src/gtk1/dnd.cpp | 237 ++++++++++++++++++++++++++++++ src/gtk1/frame.cpp | 332 +++++++++++++++++++++--------------------- src/gtk1/scrolbar.cpp | 1 + src/gtk1/slider.cpp | 1 + src/gtk1/spinbutt.cpp | 1 + src/gtk1/textctrl.cpp | 12 +- src/gtk1/win_gtk.c | 6 +- src/gtk1/window.cpp | 32 ++++ 18 files changed, 902 insertions(+), 344 deletions(-) diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index af85da16da..9587269a0d 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -13,6 +13,7 @@ #include "wx/dcclient.h" #include "wx/dcmemory.h" +#include //----------------------------------------------------------------------------- // local data diff --git a/src/gtk/dnd.cpp b/src/gtk/dnd.cpp index 39af3c4349..a9fa2f763a 100644 --- a/src/gtk/dnd.cpp +++ b/src/gtk/dnd.cpp @@ -27,6 +27,239 @@ extern bool g_blockEventsOnDrag; + +#if (GTK_MINOR_VERSION == 1) +#if (GTK_MICRO_VERSION >= 3) +#define NEW_GTK_DND_CODE +#endif +#endif + +#ifdef NEW_GTK_DND_CODE + +wxDropTarget::wxDropTarget() +{ +} + +wxDropTarget::~wxDropTarget() +{ +} + +void wxDropTarget::UnregisterWidget( GtkWidget *widget ) +{ + if (!widget) return; + + // TODO +} + +void wxDropTarget::RegisterWidget( GtkWidget *widget ) +{ + if (!widget) return; + + wxString formats; + int valid = 0; + + for ( size_t i = 0; i < GetFormatCount(); i++ ) + { + wxDataFormat df = GetFormat( i ); + switch (df) + { + case wxDF_TEXT: + if (i > 0) formats += ";"; + formats += "text/plain"; + valid++; + break; + case wxDF_FILENAME: + if (i > 0) formats += ";"; + formats += "file:ALL"; + valid++; + break; + default: + break; + } + } + + char *str = WXSTRINGCAST formats; + + // TODO +} + +// ---------------------------------------------------------------------------- +// wxTextDropTarget +// ---------------------------------------------------------------------------- + +bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) ) +{ + OnDropText( x, y, (const char*)data ); + return TRUE; +} + +bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) +{ + printf( "Got dropped text: %s.\n", psz ); + printf( "At x: %d, y: %d.\n", (int)x, (int)y ); + return TRUE; +} + +size_t wxTextDropTarget::GetFormatCount() const +{ + return 1; +} + +wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const +{ + return wxDF_TEXT; +} + +// ---------------------------------------------------------------------------- +// wxFileDropTarget +// ---------------------------------------------------------------------------- + +bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] ) +{ + printf( "Got %d dropped files.\n", (int)nFiles ); + printf( "At x: %d, y: %d.\n", (int)x, (int)y ); + for (size_t i = 0; i < nFiles; i++) + { + printf( aszFiles[i] ); + printf( "\n" ); + } + return TRUE; +} + +bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size ) +{ + size_t number = 0; + char *text = (char*) data; + for (size_t i = 0; i < size; i++) + if (text[i] == 0) number++; + + if (number == 0) return TRUE; + + char **files = new char*[number]; + + text = (char*) data; + for (size_t i = 0; i < number; i++) + { + files[i] = text; + int len = strlen( text ); + text += len+1; + } + + bool ret = OnDropFiles( x, y, 1, files ); + + free( files ); + + return ret; +} + +size_t wxFileDropTarget::GetFormatCount() const +{ + return 1; +} + +wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const +{ + return wxDF_FILENAME; +} + +//------------------------------------------------------------------------- +// wxDropSource +//------------------------------------------------------------------------- + +wxDropSource::wxDropSource( wxWindow *win ) +{ + g_blockEventsOnDrag = TRUE; + + m_window = win; + m_widget = win->m_widget; + if (win->m_wxwindow) m_widget = win->m_wxwindow; + + m_data = (wxDataObject *) NULL; + m_retValue = wxDragCancel; + + m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); + m_goaheadCursor = wxCursor( wxCURSOR_HAND ); +} + +wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) +{ + g_blockEventsOnDrag = TRUE; + + m_window = win; + m_widget = win->m_widget; + if (win->m_wxwindow) m_widget = win->m_wxwindow; + m_retValue = wxDragCancel; + + m_data = &data; + + m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); + m_goaheadCursor = wxCursor( wxCURSOR_HAND ); +} + +void wxDropSource::SetData( wxDataObject &data ) +{ + m_data = &data; +} + +wxDropSource::~wxDropSource(void) +{ +// if (m_data) delete m_data; + + g_blockEventsOnDrag = FALSE; +} + +wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) +{ + wxASSERT_MSG( m_data, "wxDragSource: no data" ); + + if (!m_data) return (wxDragResult) wxDragNone; + if (m_data->GetDataSize() == 0) return (wxDragResult) wxDragNone; + + RegisterWindow(); + + // TODO + + UnregisterWindow(); + + g_blockEventsOnDrag = FALSE; + + return m_retValue; +} + +void wxDropSource::RegisterWindow(void) +{ + if (!m_data) return; + + wxString formats; + + wxDataFormat df = m_data->GetPreferredFormat(); + + switch (df) + { + case wxDF_TEXT: + formats += "text/plain"; + break; + case wxDF_FILENAME: + formats += "file:ALL"; + break; + default: + break; + } + + char *str = WXSTRINGCAST formats; + + // TODO +} + +void wxDropSource::UnregisterWindow(void) +{ + if (!m_widget) return; + + // TODO +} + +#else + // ---------------------------------------------------------------------------- // wxDropTarget // ---------------------------------------------------------------------------- @@ -322,3 +555,7 @@ void wxDropSource::UnregisterWindow(void) gtk_signal_disconnect_by_data( GTK_OBJECT(m_widget), (gpointer)this ); } + +#endif + // NEW_GTK_DND_CODE + diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index cad5508e2d..1729aabb8e 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -160,7 +160,7 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title, if (m_parent) m_parent->AddChild( this ); PostCreation(); - + return TRUE; } @@ -316,260 +316,262 @@ void wxFrame::GetClientSize( int *width, int *height ) const void wxFrame::SetClientSize( int const width, int const height ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - int h = height; - if (m_frameMenuBar) h += wxMENU_HEIGHT; - if (m_frameStatusBar) h += wxSTATUS_HEIGHT; - if (m_frameToolBar) - { - int y = 0; - m_frameToolBar->GetSize( (int *) NULL, &y ); - h += y; - } - wxWindow::SetClientSize( width, h ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + + int h = height; + if (m_frameMenuBar) h += wxMENU_HEIGHT; + if (m_frameStatusBar) h += wxSTATUS_HEIGHT; + if (m_frameToolBar) + { + int y = 0; + m_frameToolBar->GetSize( (int *) NULL, &y ); + h += y; + } + wxWindow::SetClientSize( width, h ); } void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height ) { - // due to a bug in gtk, x,y are always 0 - // m_x = x; - // m_y = y; - - if ((m_height == height) && (m_width == width) && - (m_sizeSet)) return; - if (!m_wxwindow) return; - - m_width = width; - m_height = height; - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight; - - gtk_widget_set_usize( m_widget, m_width, m_height ); - - // This emulates the new wxMSW behaviour - - if (m_frameMenuBar) - { - m_frameMenuBar->m_x = 1; - m_frameMenuBar->m_y = 1; - m_frameMenuBar->m_width = m_width-2; - m_frameMenuBar->m_height = wxMENU_HEIGHT-2; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, 1, 1 ); - gtk_widget_set_usize( m_frameMenuBar->m_widget, m_width-2, wxMENU_HEIGHT-2 ); - } - - if (m_frameToolBar) - { - int y = 0; - if (m_frameMenuBar) y = wxMENU_HEIGHT; - int h = m_frameToolBar->m_height; + // due to a bug in gtk, x,y are always 0 + // m_x = x; + // m_y = y; + + if ((m_height == height) && (m_width == width) && + (m_sizeSet)) return; + if (!m_wxwindow) return; + + m_width = width; + m_height = height; + + if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; + if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; + if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth; + if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight; + + wxSizeEvent event( wxSize(m_width,m_height), GetId() ); + event.SetEventObject( this ); + ProcessEvent( event ); + + gtk_widget_set_usize( m_widget, m_width, m_height ); + + // This emulates the new wxMSW behaviour + + if (m_frameMenuBar) + { + m_frameMenuBar->m_x = 1; + m_frameMenuBar->m_y = 1; + m_frameMenuBar->m_width = m_width-2; + m_frameMenuBar->m_height = wxMENU_HEIGHT-2; + gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, 1, 1 ); + gtk_widget_set_usize( m_frameMenuBar->m_widget, m_width-2, wxMENU_HEIGHT-2 ); + } + + if (m_frameToolBar) + { + int y = 0; + if (m_frameMenuBar) y = wxMENU_HEIGHT; + int h = m_frameToolBar->m_height; - m_frameToolBar->m_x = 2; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, 2, y ); - gtk_widget_set_usize( m_frameToolBar->m_widget, m_width-3, h ); - } - - if (m_frameStatusBar) - { - // OK, this hurts in the eye, but I don't want to call SetSize() - // because I don't want to call any non-native functions here. - m_frameStatusBar->m_x = 0; - m_frameStatusBar->m_y = m_height-wxSTATUS_HEIGHT; - m_frameStatusBar->m_width = m_width; - m_frameStatusBar->m_height = wxSTATUS_HEIGHT; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, 0, m_height-wxSTATUS_HEIGHT ); - gtk_widget_set_usize( m_frameStatusBar->m_widget, m_width, wxSTATUS_HEIGHT ); - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - ProcessEvent( event ); + m_frameToolBar->m_x = 2; + gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, 2, y ); + gtk_widget_set_usize( m_frameToolBar->m_widget, m_width-3, h ); + } + + if (m_frameStatusBar) + { + // OK, this hurts in the eye, but I don't want to call SetSize() + // because I don't want to call any non-native functions here. + m_frameStatusBar->m_x = 0; + m_frameStatusBar->m_y = m_height-wxSTATUS_HEIGHT; + m_frameStatusBar->m_width = m_width; + m_frameStatusBar->m_height = wxSTATUS_HEIGHT; + gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, 0, m_height-wxSTATUS_HEIGHT ); + gtk_widget_set_usize( m_frameStatusBar->m_widget, m_width, wxSTATUS_HEIGHT ); + } + + m_sizeSet = TRUE; } void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - if ( GetAutoLayout() ) - Layout(); - else { - // no child: go out ! - if (!GetChildren()->First()) - return; - - // do we have exactly one child? - wxWindow *child = (wxWindow *) NULL; - for(wxNode *node = GetChildren()->First(); node; node = node->Next()) + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + + if (GetAutoLayout()) + { + Layout(); + } + else { - wxWindow *win = (wxWindow *)node->Data(); - if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog) + // no child: go out ! + if (!GetChildren()->First()) return; + + // do we have exactly one child? + wxWindow *child = (wxWindow *) NULL; + for(wxNode *node = GetChildren()->First(); node; node = node->Next()) + { + wxWindow *win = (wxWindow *)node->Data(); + if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog) #if 0 // not in m_children anyway ? - && (win != m_frameMenuBar) && - (win != m_frameToolBar) && - (win != m_frameStatusBar) + && (win != m_frameMenuBar) && + (win != m_frameToolBar) && + (win != m_frameStatusBar) #endif - ) - { - if ( child ) // it's the second one: do nothing - return; + ) + { + // it's the second one: do nothing + if (child) return; + child = win; + } + } - child = win; - } + // yes: set it's size to fill all the frame + int client_x, client_y; + GetClientSize( &client_x, &client_y ); + child->SetSize( 1, 1, client_x-2, client_y); } - - // yes: set it's size to fill all the frame - int client_x, client_y; - GetClientSize(&client_x, &client_y); - child->SetSize( 1, 1, client_x-2, client_y); - } } static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) { - menu->SetInvokingWindow( win ); - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - SetInvokingWindow( menuitem->GetSubMenu(), win ); - node = node->Next(); - } + menu->SetInvokingWindow( win ); + wxNode *node = menu->m_items.First(); + while (node) + { + wxMenuItem *menuitem = (wxMenuItem*)node->Data(); + if (menuitem->IsSubMenu()) + SetInvokingWindow( menuitem->GetSubMenu(), win ); + node = node->Next(); + } } void wxFrame::SetMenuBar( wxMenuBar *menuBar ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" ); - m_frameMenuBar = menuBar; + m_frameMenuBar = menuBar; - if (m_frameMenuBar) - { - wxNode *node = m_frameMenuBar->m_menus.First(); - while (node) + if (m_frameMenuBar) { - wxMenu *menu = (wxMenu*)node->Data(); - SetInvokingWindow( menu, this ); - node = node->Next(); - } + wxNode *node = m_frameMenuBar->m_menus.First(); + while (node) + { + wxMenu *menu = (wxMenu*)node->Data(); + SetInvokingWindow( menu, this ); + node = node->Next(); + } - if (m_frameMenuBar->m_parent != this) - { - m_frameMenuBar->m_parent = this; - gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), - m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y ); + if (m_frameMenuBar->m_parent != this) + { + m_frameMenuBar->m_parent = this; + gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), + m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y ); + } } - } } wxMenuBar *wxFrame::GetMenuBar(void) const { - return m_frameMenuBar; + return m_frameMenuBar; } wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" ); + wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" ); - m_frameToolBar = OnCreateToolBar( style, id, name ); + m_frameToolBar = OnCreateToolBar( style, id, name ); - GetChildren()->DeleteObject( m_frameToolBar ); + GetChildren()->DeleteObject( m_frameToolBar ); - return m_frameToolBar; + return m_frameToolBar; } wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString& name ) { - return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name ); + return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name ); } wxToolBar *wxFrame::GetToolBar(void) const { - return m_frameToolBar; + return m_frameToolBar; } wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" ); + wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" ); - m_frameStatusBar = OnCreateStatusBar( number, style, id, name ); + m_frameStatusBar = OnCreateStatusBar( number, style, id, name ); - return m_frameStatusBar; + return m_frameStatusBar; } wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString& name ) { - wxStatusBar *statusBar = (wxStatusBar *) NULL; + wxStatusBar *statusBar = (wxStatusBar *) NULL; - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name); + 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() ); + // 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 ); + long x, y; + dc.GetTextExtent( "X", &x, &y ); - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); + int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - statusBar->SetSize( -1, -1, 100, height ); + statusBar->SetSize( -1, -1, 100, height ); - statusBar->SetFieldsCount( number ); - return statusBar; + statusBar->SetFieldsCount( number ); + return statusBar; } void wxFrame::SetStatusText(const wxString& text, int number) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); + wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - m_frameStatusBar->SetStatusText(text, number); + m_frameStatusBar->SetStatusText(text, number); } void wxFrame::SetStatusWidths(int n, const int widths_field[] ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); + wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - m_frameStatusBar->SetStatusWidths(n, widths_field); + m_frameStatusBar->SetStatusWidths(n, widths_field); } wxStatusBar *wxFrame::GetStatusBar(void) const { - return m_frameStatusBar; + return m_frameStatusBar; } void wxFrame::SetTitle( const wxString &title ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - m_title = title; - if (m_title.IsNull()) m_title = ""; - gtk_window_set_title( GTK_WINDOW(m_widget), title ); + m_title = title; + if (m_title.IsNull()) m_title = ""; + gtk_window_set_title( GTK_WINDOW(m_widget), title ); } void wxFrame::SetIcon( const wxIcon &icon ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - m_icon = icon; - if (!icon.Ok()) return; + m_icon = icon; + if (!icon.Ok()) return; - wxMask *mask = icon.GetMask(); - GdkBitmap *bm = (GdkBitmap *) NULL; - if (mask) bm = mask->GetBitmap(); + wxMask *mask = icon.GetMask(); + GdkBitmap *bm = (GdkBitmap *) NULL; + if (mask) bm = mask->GetBitmap(); - gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm ); + gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm ); } diff --git a/src/gtk/scrolbar.cpp b/src/gtk/scrolbar.cpp index 0cd5adbd31..49cee3a201 100644 --- a/src/gtk/scrolbar.cpp +++ b/src/gtk/scrolbar.cpp @@ -14,6 +14,7 @@ #include "wx/scrolbar.h" #include "wx/utils.h" +#include //----------------------------------------------------------------------------- // data diff --git a/src/gtk/slider.cpp b/src/gtk/slider.cpp index c1a4ed025a..d1532a7702 100644 --- a/src/gtk/slider.cpp +++ b/src/gtk/slider.cpp @@ -13,6 +13,7 @@ #include "wx/slider.h" #include "wx/utils.h" +#include //----------------------------------------------------------------------------- // data diff --git a/src/gtk/spinbutt.cpp b/src/gtk/spinbutt.cpp index 83eb28ec50..5fb2935fc4 100644 --- a/src/gtk/spinbutt.cpp +++ b/src/gtk/spinbutt.cpp @@ -14,6 +14,7 @@ #include "wx/spinbutt.h" #include "wx/utils.h" +#include //----------------------------------------------------------------------------- // data diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp index 7373c0ad2c..127c5d9093 100644 --- a/src/gtk/textctrl.cpp +++ b/src/gtk/textctrl.cpp @@ -83,17 +83,17 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, // ... and put into the upper left hand corner of the table m_widget = gtk_table_new(bHasHScrollbar ? 2 : 1, 2, FALSE); - gtk_table_attach(GTK_TABLE(m_widget), m_text, 0, 1, 0, 1, - GTK_FILL | GTK_EXPAND, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - 0, 0); + gtk_table_attach( GTK_TABLE(m_widget), m_text, 0, 1, 0, 1, + (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), + (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK), + 0, 0); // put the horizontal scrollbar in the lower left hand corner if (bHasHScrollbar) { GtkWidget *hscrollbar = gtk_hscrollbar_new(GTK_TEXT(m_text)->hadj); gtk_table_attach(GTK_TABLE(m_widget), hscrollbar, 0, 1, 1, 2, - GTK_EXPAND | GTK_FILL, + (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), GTK_FILL, 0, 0); gtk_widget_show(hscrollbar); @@ -103,7 +103,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, GtkWidget *vscrollbar = gtk_vscrollbar_new(GTK_TEXT(m_text)->vadj); gtk_table_attach(GTK_TABLE(m_widget), vscrollbar, 1, 2, 0, 1, GTK_FILL, - GTK_EXPAND | GTK_FILL | GTK_SHRINK, + (GtkAttachOptions)(GTK_EXPAND | GTK_FILL | GTK_SHRINK), 0, 0); gtk_widget_show( vscrollbar ); } diff --git a/src/gtk/win_gtk.c b/src/gtk/win_gtk.c index 2e1a9809f7..53e308a1c9 100644 --- a/src/gtk/win_gtk.c +++ b/src/gtk/win_gtk.c @@ -78,7 +78,7 @@ gtk_myfixed_class_init (GtkMyFixedClass *klass) object_class = (GtkObjectClass*) klass; widget_class = (GtkWidgetClass*) klass; container_class = (GtkContainerClass*) klass; - + parent_class = gtk_type_class (gtk_container_get_type ()); widget_class->map = gtk_myfixed_map; @@ -104,6 +104,10 @@ gtk_myfixed_init (GtkMyFixed *myfixed) GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW); GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC); +#if (GTK_MINOR_VERSION == 1) + gtk_container_set_resize_mode( GTK_CONTAINER(myfixed), GTK_RESIZE_PARENT ); +#endif + myfixed->children = NULL; } diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 490d102544..7ad7747467 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -108,6 +108,16 @@ */ +//----------------------------------------------------------------------------- +// cond comp +//----------------------------------------------------------------------------- + +#if (GTK_MINOR_VERSION == 1) +#if (GTK_MICRO_VERSION >= 3) +#define NEW_GTK_DND_CODE +#endif +#endif + //----------------------------------------------------------------------------- // data //----------------------------------------------------------------------------- @@ -837,6 +847,11 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *widget, GdkEventBut return FALSE; } + +#ifdef NEW_GTK_DND_CODE + +#else + //----------------------------------------------------------------------------- // "drop_data_available_event" //----------------------------------------------------------------------------- @@ -862,6 +877,9 @@ static void gtk_window_drop_callback( GtkWidget *widget, GdkEventDropDataAvailab */ } +#endif + // NEW_GTK_DND_CODE + //----------------------------------------------------------------------------- // InsertChild for wxWindow. //----------------------------------------------------------------------------- @@ -2196,18 +2214,32 @@ void wxWindow::ConnectDnDWidget( GtkWidget *widget ) m_dropTarget->RegisterWidget( widget ); +#ifdef NEW_GTK_DND_CODE + +#else + gtk_signal_connect( GTK_OBJECT(widget), "drop_data_available_event", GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this ); + +#endif + } void wxWindow::DisconnectDnDWidget( GtkWidget *widget ) { if (!m_dropTarget) return; +#ifdef NEW_GTK_DND_CODE + +#else + gtk_signal_disconnect_by_func( GTK_OBJECT(widget), GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this ); m_dropTarget->UnregisterWidget( widget ); + +#endif + } GtkWidget* wxWindow::GetConnectWidget() diff --git a/src/gtk1/dcclient.cpp b/src/gtk1/dcclient.cpp index af85da16da..9587269a0d 100644 --- a/src/gtk1/dcclient.cpp +++ b/src/gtk1/dcclient.cpp @@ -13,6 +13,7 @@ #include "wx/dcclient.h" #include "wx/dcmemory.h" +#include //----------------------------------------------------------------------------- // local data diff --git a/src/gtk1/dnd.cpp b/src/gtk1/dnd.cpp index 39af3c4349..a9fa2f763a 100644 --- a/src/gtk1/dnd.cpp +++ b/src/gtk1/dnd.cpp @@ -27,6 +27,239 @@ extern bool g_blockEventsOnDrag; + +#if (GTK_MINOR_VERSION == 1) +#if (GTK_MICRO_VERSION >= 3) +#define NEW_GTK_DND_CODE +#endif +#endif + +#ifdef NEW_GTK_DND_CODE + +wxDropTarget::wxDropTarget() +{ +} + +wxDropTarget::~wxDropTarget() +{ +} + +void wxDropTarget::UnregisterWidget( GtkWidget *widget ) +{ + if (!widget) return; + + // TODO +} + +void wxDropTarget::RegisterWidget( GtkWidget *widget ) +{ + if (!widget) return; + + wxString formats; + int valid = 0; + + for ( size_t i = 0; i < GetFormatCount(); i++ ) + { + wxDataFormat df = GetFormat( i ); + switch (df) + { + case wxDF_TEXT: + if (i > 0) formats += ";"; + formats += "text/plain"; + valid++; + break; + case wxDF_FILENAME: + if (i > 0) formats += ";"; + formats += "file:ALL"; + valid++; + break; + default: + break; + } + } + + char *str = WXSTRINGCAST formats; + + // TODO +} + +// ---------------------------------------------------------------------------- +// wxTextDropTarget +// ---------------------------------------------------------------------------- + +bool wxTextDropTarget::OnDrop( long x, long y, const void *data, size_t WXUNUSED(size) ) +{ + OnDropText( x, y, (const char*)data ); + return TRUE; +} + +bool wxTextDropTarget::OnDropText( long x, long y, const char *psz ) +{ + printf( "Got dropped text: %s.\n", psz ); + printf( "At x: %d, y: %d.\n", (int)x, (int)y ); + return TRUE; +} + +size_t wxTextDropTarget::GetFormatCount() const +{ + return 1; +} + +wxDataFormat wxTextDropTarget::GetFormat(size_t WXUNUSED(n)) const +{ + return wxDF_TEXT; +} + +// ---------------------------------------------------------------------------- +// wxFileDropTarget +// ---------------------------------------------------------------------------- + +bool wxFileDropTarget::OnDropFiles( long x, long y, size_t nFiles, const char * const aszFiles[] ) +{ + printf( "Got %d dropped files.\n", (int)nFiles ); + printf( "At x: %d, y: %d.\n", (int)x, (int)y ); + for (size_t i = 0; i < nFiles; i++) + { + printf( aszFiles[i] ); + printf( "\n" ); + } + return TRUE; +} + +bool wxFileDropTarget::OnDrop(long x, long y, const void *data, size_t size ) +{ + size_t number = 0; + char *text = (char*) data; + for (size_t i = 0; i < size; i++) + if (text[i] == 0) number++; + + if (number == 0) return TRUE; + + char **files = new char*[number]; + + text = (char*) data; + for (size_t i = 0; i < number; i++) + { + files[i] = text; + int len = strlen( text ); + text += len+1; + } + + bool ret = OnDropFiles( x, y, 1, files ); + + free( files ); + + return ret; +} + +size_t wxFileDropTarget::GetFormatCount() const +{ + return 1; +} + +wxDataFormat wxFileDropTarget::GetFormat(size_t WXUNUSED(n)) const +{ + return wxDF_FILENAME; +} + +//------------------------------------------------------------------------- +// wxDropSource +//------------------------------------------------------------------------- + +wxDropSource::wxDropSource( wxWindow *win ) +{ + g_blockEventsOnDrag = TRUE; + + m_window = win; + m_widget = win->m_widget; + if (win->m_wxwindow) m_widget = win->m_wxwindow; + + m_data = (wxDataObject *) NULL; + m_retValue = wxDragCancel; + + m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); + m_goaheadCursor = wxCursor( wxCURSOR_HAND ); +} + +wxDropSource::wxDropSource( wxDataObject &data, wxWindow *win ) +{ + g_blockEventsOnDrag = TRUE; + + m_window = win; + m_widget = win->m_widget; + if (win->m_wxwindow) m_widget = win->m_wxwindow; + m_retValue = wxDragCancel; + + m_data = &data; + + m_defaultCursor = wxCursor( wxCURSOR_NO_ENTRY ); + m_goaheadCursor = wxCursor( wxCURSOR_HAND ); +} + +void wxDropSource::SetData( wxDataObject &data ) +{ + m_data = &data; +} + +wxDropSource::~wxDropSource(void) +{ +// if (m_data) delete m_data; + + g_blockEventsOnDrag = FALSE; +} + +wxDragResult wxDropSource::DoDragDrop( bool WXUNUSED(bAllowMove) ) +{ + wxASSERT_MSG( m_data, "wxDragSource: no data" ); + + if (!m_data) return (wxDragResult) wxDragNone; + if (m_data->GetDataSize() == 0) return (wxDragResult) wxDragNone; + + RegisterWindow(); + + // TODO + + UnregisterWindow(); + + g_blockEventsOnDrag = FALSE; + + return m_retValue; +} + +void wxDropSource::RegisterWindow(void) +{ + if (!m_data) return; + + wxString formats; + + wxDataFormat df = m_data->GetPreferredFormat(); + + switch (df) + { + case wxDF_TEXT: + formats += "text/plain"; + break; + case wxDF_FILENAME: + formats += "file:ALL"; + break; + default: + break; + } + + char *str = WXSTRINGCAST formats; + + // TODO +} + +void wxDropSource::UnregisterWindow(void) +{ + if (!m_widget) return; + + // TODO +} + +#else + // ---------------------------------------------------------------------------- // wxDropTarget // ---------------------------------------------------------------------------- @@ -322,3 +555,7 @@ void wxDropSource::UnregisterWindow(void) gtk_signal_disconnect_by_data( GTK_OBJECT(m_widget), (gpointer)this ); } + +#endif + // NEW_GTK_DND_CODE + diff --git a/src/gtk1/frame.cpp b/src/gtk1/frame.cpp index cad5508e2d..1729aabb8e 100644 --- a/src/gtk1/frame.cpp +++ b/src/gtk1/frame.cpp @@ -160,7 +160,7 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title, if (m_parent) m_parent->AddChild( this ); PostCreation(); - + return TRUE; } @@ -316,260 +316,262 @@ void wxFrame::GetClientSize( int *width, int *height ) const void wxFrame::SetClientSize( int const width, int const height ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - int h = height; - if (m_frameMenuBar) h += wxMENU_HEIGHT; - if (m_frameStatusBar) h += wxSTATUS_HEIGHT; - if (m_frameToolBar) - { - int y = 0; - m_frameToolBar->GetSize( (int *) NULL, &y ); - h += y; - } - wxWindow::SetClientSize( width, h ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + + int h = height; + if (m_frameMenuBar) h += wxMENU_HEIGHT; + if (m_frameStatusBar) h += wxSTATUS_HEIGHT; + if (m_frameToolBar) + { + int y = 0; + m_frameToolBar->GetSize( (int *) NULL, &y ); + h += y; + } + wxWindow::SetClientSize( width, h ); } void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height ) { - // due to a bug in gtk, x,y are always 0 - // m_x = x; - // m_y = y; - - if ((m_height == height) && (m_width == width) && - (m_sizeSet)) return; - if (!m_wxwindow) return; - - m_width = width; - m_height = height; - if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; - if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; - if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth; - if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight; - - gtk_widget_set_usize( m_widget, m_width, m_height ); - - // This emulates the new wxMSW behaviour - - if (m_frameMenuBar) - { - m_frameMenuBar->m_x = 1; - m_frameMenuBar->m_y = 1; - m_frameMenuBar->m_width = m_width-2; - m_frameMenuBar->m_height = wxMENU_HEIGHT-2; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, 1, 1 ); - gtk_widget_set_usize( m_frameMenuBar->m_widget, m_width-2, wxMENU_HEIGHT-2 ); - } - - if (m_frameToolBar) - { - int y = 0; - if (m_frameMenuBar) y = wxMENU_HEIGHT; - int h = m_frameToolBar->m_height; + // due to a bug in gtk, x,y are always 0 + // m_x = x; + // m_y = y; + + if ((m_height == height) && (m_width == width) && + (m_sizeSet)) return; + if (!m_wxwindow) return; + + m_width = width; + m_height = height; + + if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; + if ((m_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight; + if ((m_maxWidth != -1) && (m_width > m_maxWidth)) m_width = m_minWidth; + if ((m_maxHeight != -1) && (m_height > m_maxHeight)) m_height = m_minHeight; + + wxSizeEvent event( wxSize(m_width,m_height), GetId() ); + event.SetEventObject( this ); + ProcessEvent( event ); + + gtk_widget_set_usize( m_widget, m_width, m_height ); + + // This emulates the new wxMSW behaviour + + if (m_frameMenuBar) + { + m_frameMenuBar->m_x = 1; + m_frameMenuBar->m_y = 1; + m_frameMenuBar->m_width = m_width-2; + m_frameMenuBar->m_height = wxMENU_HEIGHT-2; + gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameMenuBar->m_widget, 1, 1 ); + gtk_widget_set_usize( m_frameMenuBar->m_widget, m_width-2, wxMENU_HEIGHT-2 ); + } + + if (m_frameToolBar) + { + int y = 0; + if (m_frameMenuBar) y = wxMENU_HEIGHT; + int h = m_frameToolBar->m_height; - m_frameToolBar->m_x = 2; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, 2, y ); - gtk_widget_set_usize( m_frameToolBar->m_widget, m_width-3, h ); - } - - if (m_frameStatusBar) - { - // OK, this hurts in the eye, but I don't want to call SetSize() - // because I don't want to call any non-native functions here. - m_frameStatusBar->m_x = 0; - m_frameStatusBar->m_y = m_height-wxSTATUS_HEIGHT; - m_frameStatusBar->m_width = m_width; - m_frameStatusBar->m_height = wxSTATUS_HEIGHT; - gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, 0, m_height-wxSTATUS_HEIGHT ); - gtk_widget_set_usize( m_frameStatusBar->m_widget, m_width, wxSTATUS_HEIGHT ); - } - - m_sizeSet = TRUE; - - wxSizeEvent event( wxSize(m_width,m_height), GetId() ); - event.SetEventObject( this ); - ProcessEvent( event ); + m_frameToolBar->m_x = 2; + gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameToolBar->m_widget, 2, y ); + gtk_widget_set_usize( m_frameToolBar->m_widget, m_width-3, h ); + } + + if (m_frameStatusBar) + { + // OK, this hurts in the eye, but I don't want to call SetSize() + // because I don't want to call any non-native functions here. + m_frameStatusBar->m_x = 0; + m_frameStatusBar->m_y = m_height-wxSTATUS_HEIGHT; + m_frameStatusBar->m_width = m_width; + m_frameStatusBar->m_height = wxSTATUS_HEIGHT; + gtk_myfixed_move( GTK_MYFIXED(m_wxwindow), m_frameStatusBar->m_widget, 0, m_height-wxSTATUS_HEIGHT ); + gtk_widget_set_usize( m_frameStatusBar->m_widget, m_width, wxSTATUS_HEIGHT ); + } + + m_sizeSet = TRUE; } void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - - if ( GetAutoLayout() ) - Layout(); - else { - // no child: go out ! - if (!GetChildren()->First()) - return; - - // do we have exactly one child? - wxWindow *child = (wxWindow *) NULL; - for(wxNode *node = GetChildren()->First(); node; node = node->Next()) + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + + if (GetAutoLayout()) + { + Layout(); + } + else { - wxWindow *win = (wxWindow *)node->Data(); - if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog) + // no child: go out ! + if (!GetChildren()->First()) return; + + // do we have exactly one child? + wxWindow *child = (wxWindow *) NULL; + for(wxNode *node = GetChildren()->First(); node; node = node->Next()) + { + wxWindow *win = (wxWindow *)node->Data(); + if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog) #if 0 // not in m_children anyway ? - && (win != m_frameMenuBar) && - (win != m_frameToolBar) && - (win != m_frameStatusBar) + && (win != m_frameMenuBar) && + (win != m_frameToolBar) && + (win != m_frameStatusBar) #endif - ) - { - if ( child ) // it's the second one: do nothing - return; + ) + { + // it's the second one: do nothing + if (child) return; + child = win; + } + } - child = win; - } + // yes: set it's size to fill all the frame + int client_x, client_y; + GetClientSize( &client_x, &client_y ); + child->SetSize( 1, 1, client_x-2, client_y); } - - // yes: set it's size to fill all the frame - int client_x, client_y; - GetClientSize(&client_x, &client_y); - child->SetSize( 1, 1, client_x-2, client_y); - } } static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) { - menu->SetInvokingWindow( win ); - wxNode *node = menu->m_items.First(); - while (node) - { - wxMenuItem *menuitem = (wxMenuItem*)node->Data(); - if (menuitem->IsSubMenu()) - SetInvokingWindow( menuitem->GetSubMenu(), win ); - node = node->Next(); - } + menu->SetInvokingWindow( win ); + wxNode *node = menu->m_items.First(); + while (node) + { + wxMenuItem *menuitem = (wxMenuItem*)node->Data(); + if (menuitem->IsSubMenu()) + SetInvokingWindow( menuitem->GetSubMenu(), win ); + node = node->Next(); + } } void wxFrame::SetMenuBar( wxMenuBar *menuBar ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" ); - m_frameMenuBar = menuBar; + m_frameMenuBar = menuBar; - if (m_frameMenuBar) - { - wxNode *node = m_frameMenuBar->m_menus.First(); - while (node) + if (m_frameMenuBar) { - wxMenu *menu = (wxMenu*)node->Data(); - SetInvokingWindow( menu, this ); - node = node->Next(); - } + wxNode *node = m_frameMenuBar->m_menus.First(); + while (node) + { + wxMenu *menu = (wxMenu*)node->Data(); + SetInvokingWindow( menu, this ); + node = node->Next(); + } - if (m_frameMenuBar->m_parent != this) - { - m_frameMenuBar->m_parent = this; - gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), - m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y ); + if (m_frameMenuBar->m_parent != this) + { + m_frameMenuBar->m_parent = this; + gtk_myfixed_put( GTK_MYFIXED(m_wxwindow), + m_frameMenuBar->m_widget, m_frameMenuBar->m_x, m_frameMenuBar->m_y ); + } } - } } wxMenuBar *wxFrame::GetMenuBar(void) const { - return m_frameMenuBar; + return m_frameMenuBar; } wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" ); + wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" ); - m_frameToolBar = OnCreateToolBar( style, id, name ); + m_frameToolBar = OnCreateToolBar( style, id, name ); - GetChildren()->DeleteObject( m_frameToolBar ); + GetChildren()->DeleteObject( m_frameToolBar ); - return m_frameToolBar; + return m_frameToolBar; } wxToolBar* wxFrame::OnCreateToolBar( long style, wxWindowID id, const wxString& name ) { - return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name ); + return new wxToolBar( this, id, wxDefaultPosition, wxDefaultSize, style, name ); } wxToolBar *wxFrame::GetToolBar(void) const { - return m_frameToolBar; + return m_frameToolBar; } wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" ); + wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" ); - m_frameStatusBar = OnCreateStatusBar( number, style, id, name ); + m_frameStatusBar = OnCreateStatusBar( number, style, id, name ); - return m_frameStatusBar; + return m_frameStatusBar; } wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id, const wxString& name ) { - wxStatusBar *statusBar = (wxStatusBar *) NULL; + wxStatusBar *statusBar = (wxStatusBar *) NULL; - statusBar = new wxStatusBar(this, id, wxPoint(0, 0), wxSize(100, 20), style, name); + 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() ); + // 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 ); + long x, y; + dc.GetTextExtent( "X", &x, &y ); - int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); + int height = (int)( (y * 1.1) + 2* statusBar->GetBorderY()); - statusBar->SetSize( -1, -1, 100, height ); + statusBar->SetSize( -1, -1, 100, height ); - statusBar->SetFieldsCount( number ); - return statusBar; + statusBar->SetFieldsCount( number ); + return statusBar; } void wxFrame::SetStatusText(const wxString& text, int number) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); + wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" ); - m_frameStatusBar->SetStatusText(text, number); + m_frameStatusBar->SetStatusText(text, number); } void wxFrame::SetStatusWidths(int n, const int widths_field[] ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); + wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" ); - m_frameStatusBar->SetStatusWidths(n, widths_field); + m_frameStatusBar->SetStatusWidths(n, widths_field); } wxStatusBar *wxFrame::GetStatusBar(void) const { - return m_frameStatusBar; + return m_frameStatusBar; } void wxFrame::SetTitle( const wxString &title ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - m_title = title; - if (m_title.IsNull()) m_title = ""; - gtk_window_set_title( GTK_WINDOW(m_widget), title ); + m_title = title; + if (m_title.IsNull()) m_title = ""; + gtk_window_set_title( GTK_WINDOW(m_widget), title ); } void wxFrame::SetIcon( const wxIcon &icon ) { - wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); + wxASSERT_MSG( (m_widget != NULL), "invalid frame" ); - m_icon = icon; - if (!icon.Ok()) return; + m_icon = icon; + if (!icon.Ok()) return; - wxMask *mask = icon.GetMask(); - GdkBitmap *bm = (GdkBitmap *) NULL; - if (mask) bm = mask->GetBitmap(); + wxMask *mask = icon.GetMask(); + GdkBitmap *bm = (GdkBitmap *) NULL; + if (mask) bm = mask->GetBitmap(); - gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm ); + gdk_window_set_icon( m_widget->window, (GdkWindow *) NULL, icon.GetPixmap(), bm ); } diff --git a/src/gtk1/scrolbar.cpp b/src/gtk1/scrolbar.cpp index 0cd5adbd31..49cee3a201 100644 --- a/src/gtk1/scrolbar.cpp +++ b/src/gtk1/scrolbar.cpp @@ -14,6 +14,7 @@ #include "wx/scrolbar.h" #include "wx/utils.h" +#include //----------------------------------------------------------------------------- // data diff --git a/src/gtk1/slider.cpp b/src/gtk1/slider.cpp index c1a4ed025a..d1532a7702 100644 --- a/src/gtk1/slider.cpp +++ b/src/gtk1/slider.cpp @@ -13,6 +13,7 @@ #include "wx/slider.h" #include "wx/utils.h" +#include //----------------------------------------------------------------------------- // data diff --git a/src/gtk1/spinbutt.cpp b/src/gtk1/spinbutt.cpp index 83eb28ec50..5fb2935fc4 100644 --- a/src/gtk1/spinbutt.cpp +++ b/src/gtk1/spinbutt.cpp @@ -14,6 +14,7 @@ #include "wx/spinbutt.h" #include "wx/utils.h" +#include //----------------------------------------------------------------------------- // data diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp index 7373c0ad2c..127c5d9093 100644 --- a/src/gtk1/textctrl.cpp +++ b/src/gtk1/textctrl.cpp @@ -83,17 +83,17 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, // ... and put into the upper left hand corner of the table m_widget = gtk_table_new(bHasHScrollbar ? 2 : 1, 2, FALSE); - gtk_table_attach(GTK_TABLE(m_widget), m_text, 0, 1, 0, 1, - GTK_FILL | GTK_EXPAND, - GTK_FILL | GTK_EXPAND | GTK_SHRINK, - 0, 0); + gtk_table_attach( GTK_TABLE(m_widget), m_text, 0, 1, 0, 1, + (GtkAttachOptions)(GTK_FILL | GTK_EXPAND), + (GtkAttachOptions)(GTK_FILL | GTK_EXPAND | GTK_SHRINK), + 0, 0); // put the horizontal scrollbar in the lower left hand corner if (bHasHScrollbar) { GtkWidget *hscrollbar = gtk_hscrollbar_new(GTK_TEXT(m_text)->hadj); gtk_table_attach(GTK_TABLE(m_widget), hscrollbar, 0, 1, 1, 2, - GTK_EXPAND | GTK_FILL, + (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), GTK_FILL, 0, 0); gtk_widget_show(hscrollbar); @@ -103,7 +103,7 @@ bool wxTextCtrl::Create( wxWindow *parent, wxWindowID id, const wxString &value, GtkWidget *vscrollbar = gtk_vscrollbar_new(GTK_TEXT(m_text)->vadj); gtk_table_attach(GTK_TABLE(m_widget), vscrollbar, 1, 2, 0, 1, GTK_FILL, - GTK_EXPAND | GTK_FILL | GTK_SHRINK, + (GtkAttachOptions)(GTK_EXPAND | GTK_FILL | GTK_SHRINK), 0, 0); gtk_widget_show( vscrollbar ); } diff --git a/src/gtk1/win_gtk.c b/src/gtk1/win_gtk.c index 2e1a9809f7..53e308a1c9 100644 --- a/src/gtk1/win_gtk.c +++ b/src/gtk1/win_gtk.c @@ -78,7 +78,7 @@ gtk_myfixed_class_init (GtkMyFixedClass *klass) object_class = (GtkObjectClass*) klass; widget_class = (GtkWidgetClass*) klass; container_class = (GtkContainerClass*) klass; - + parent_class = gtk_type_class (gtk_container_get_type ()); widget_class->map = gtk_myfixed_map; @@ -104,6 +104,10 @@ gtk_myfixed_init (GtkMyFixed *myfixed) GTK_WIDGET_UNSET_FLAGS (myfixed, GTK_NO_WINDOW); GTK_WIDGET_SET_FLAGS (myfixed, GTK_BASIC); +#if (GTK_MINOR_VERSION == 1) + gtk_container_set_resize_mode( GTK_CONTAINER(myfixed), GTK_RESIZE_PARENT ); +#endif + myfixed->children = NULL; } diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 490d102544..7ad7747467 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -108,6 +108,16 @@ */ +//----------------------------------------------------------------------------- +// cond comp +//----------------------------------------------------------------------------- + +#if (GTK_MINOR_VERSION == 1) +#if (GTK_MICRO_VERSION >= 3) +#define NEW_GTK_DND_CODE +#endif +#endif + //----------------------------------------------------------------------------- // data //----------------------------------------------------------------------------- @@ -837,6 +847,11 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *widget, GdkEventBut return FALSE; } + +#ifdef NEW_GTK_DND_CODE + +#else + //----------------------------------------------------------------------------- // "drop_data_available_event" //----------------------------------------------------------------------------- @@ -862,6 +877,9 @@ static void gtk_window_drop_callback( GtkWidget *widget, GdkEventDropDataAvailab */ } +#endif + // NEW_GTK_DND_CODE + //----------------------------------------------------------------------------- // InsertChild for wxWindow. //----------------------------------------------------------------------------- @@ -2196,18 +2214,32 @@ void wxWindow::ConnectDnDWidget( GtkWidget *widget ) m_dropTarget->RegisterWidget( widget ); +#ifdef NEW_GTK_DND_CODE + +#else + gtk_signal_connect( GTK_OBJECT(widget), "drop_data_available_event", GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this ); + +#endif + } void wxWindow::DisconnectDnDWidget( GtkWidget *widget ) { if (!m_dropTarget) return; +#ifdef NEW_GTK_DND_CODE + +#else + gtk_signal_disconnect_by_func( GTK_OBJECT(widget), GTK_SIGNAL_FUNC(gtk_window_drop_callback), (gpointer)this ); m_dropTarget->UnregisterWidget( widget ); + +#endif + } GtkWidget* wxWindow::GetConnectWidget() -- 2.47.2