Small distrib changes,

Use GTK's native insert for wxListBox,
  Compile pacthes for AIX,
  wxClipboard things,
  Ignore wxSIZE_AUTO flags in wxDialog and wxFrame,
  Ignore toolbar size in wxFrame::Get/SetClientSize


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1999-10-24 16:45:01 +00:00
parent 185fa6bf6f
commit 11e1c70d8e
30 changed files with 355 additions and 580 deletions

View File

@@ -1,5 +1,5 @@
# #
# This file was automatically generated by tmake at 18:37, 1999/10/22 # This file was automatically generated by tmake at 13:52, 1999/10/23
# DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE UNX.T! # DO NOT CHANGE THIS FILE, YOUR CHANGES WILL BE LOST! CHANGE UNX.T!
# #
@@ -187,6 +187,7 @@ WX_HEADERS = \
confbase.h \ confbase.h \
config.h \ config.h \
control.h \ control.h \
ctrlsub.h \
cursor.h \ cursor.h \
dataobj.h \ dataobj.h \
date.h \ date.h \

View File

@@ -444,6 +444,7 @@ combobox.h W
confbase.h W confbase.h W
config.h W config.h W
control.h W control.h W
ctrlsub.h W
cursor.h W cursor.h W
dataobj.h W dataobj.h W
date.h W B date.h W B

View File

@@ -17,14 +17,19 @@ Support for GTK 1.0 has been dropped. This version has
been tested with GTK 1.2.3 and GTK 1.2.6 - it is known been tested with GTK 1.2.3 and GTK 1.2.6 - it is known
not work with some other versions. not work with some other versions.
wxChoice can now handle only either void client data Rewritten the support for multiple-format Drag'n'Drop and
(which it will not delete on destruction) or client clipboard under both GTK and MSW. There are probably some
data of the wxClientData type (which it will delete), problems here and there left.
wxListBox and wxChoice can now handle only either void
client data (which it will not delete on destruction) or
client data of the wxClientData type (which it will delete),
instead of both at the same time. The same will happen instead of both at the same time. The same will happen
to wxListBox and wxComboBox some time. to wxComboBox some time. Also, wxListBox can now sort its
items.
Many build fixes for various platforms have been applied, Many build fixes for various platforms have been applied,
try again, poor HP-UX and *BSD users, but don't reckon try again, poor AIX, HP-UX and *BSD users, but don't reckon
with immediate success. Actually, when using GNU compilers, with immediate success. Actually, when using GNU compilers,
your chances are quite good. your chances are quite good.
@@ -78,7 +83,15 @@ wxSlider, wxWindow, wxScrollBar now emit the correct events
for scrolling (like page up, line up etc) instead of just for scrolling (like page up, line up etc) instead of just
"thumb-track" as before. "thumb-track" as before.
Corrected bug in Reparent() code. Corrected Reparent() code.
Corrected key accelerator code for toplevel child windows.
Corrected cursor handling in a number of special cases.
wxGLCanvas now waits until all expose events have been sent
and then emits its own redraw event. Also removed flicker
for wxGLCanvas and in some other places.
A handler to read PCX file (in most variants) has been added. A handler to read PCX file (in most variants) has been added.

View File

@@ -76,14 +76,10 @@ public:
// implementation from now on // implementation from now on
#if wxUSE_DRAG_AND_DROP void GtkDisableEvents();
void SetDropTarget( wxDropTarget *dropTarget ); void GtkEnableEvents();
#endif void GtkAddItem( const wxString &item, int pos=-1 );
int GtkGetIndex( GtkWidget *item ) const;
void DisableEvents();
void EnableEvents();
void AppendWithoutSorting( const wxString &item );
int GetIndex( GtkWidget *item ) const;
GtkWidget *GetConnectWidget(); GtkWidget *GetConnectWidget();
bool IsOwnGtkWindow( GdkWindow *window ); bool IsOwnGtkWindow( GdkWindow *window );
void ApplyWidgetStyle(); void ApplyWidgetStyle();
@@ -94,7 +90,7 @@ public:
#endif // wxUSE_TOOLTIPS #endif // wxUSE_TOOLTIPS
GtkList *m_list; GtkList *m_list;
wxList m_clientData; wxList m_clientList;
#if wxUSE_CHECKLISTBOX #if wxUSE_CHECKLISTBOX
bool m_hasCheckBoxes; bool m_hasCheckBoxes;

View File

@@ -76,14 +76,10 @@ public:
// implementation from now on // implementation from now on
#if wxUSE_DRAG_AND_DROP void GtkDisableEvents();
void SetDropTarget( wxDropTarget *dropTarget ); void GtkEnableEvents();
#endif void GtkAddItem( const wxString &item, int pos=-1 );
int GtkGetIndex( GtkWidget *item ) const;
void DisableEvents();
void EnableEvents();
void AppendWithoutSorting( const wxString &item );
int GetIndex( GtkWidget *item ) const;
GtkWidget *GetConnectWidget(); GtkWidget *GetConnectWidget();
bool IsOwnGtkWindow( GdkWindow *window ); bool IsOwnGtkWindow( GdkWindow *window );
void ApplyWidgetStyle(); void ApplyWidgetStyle();
@@ -94,7 +90,7 @@ public:
#endif // wxUSE_TOOLTIPS #endif // wxUSE_TOOLTIPS
GtkList *m_list; GtkList *m_list;
wxList m_clientData; wxList m_clientList;
#if wxUSE_CHECKLISTBOX #if wxUSE_CHECKLISTBOX
bool m_hasCheckBoxes; bool m_hasCheckBoxes;

View File

@@ -557,7 +557,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
// layout constraints // layout constraints
panel = new wxPanel(m_notebook); panel = new wxPanel(m_notebook);
panel->SetAutoLayout( true ); panel->SetAutoLayout( TRUE );
wxLayoutConstraints *c; wxLayoutConstraints *c;
c = new wxLayoutConstraints; c = new wxLayoutConstraints;
@@ -583,7 +583,7 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
// sizer // sizer
panel = new wxPanel(m_notebook); panel = new wxPanel(m_notebook);
panel->SetAutoLayout( true ); panel->SetAutoLayout( TRUE );
wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL ); wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );

View File

@@ -504,7 +504,7 @@ void MyPanel::DoPasteFromClipboard()
{ {
*m_log << "Clipboard supports requested format.\n"; *m_log << "Clipboard supports requested format.\n";
if (wxTheClipboard->GetData( &data )) if (wxTheClipboard->GetData( data ))
{ {
*m_log << "Successfully retrieved data from the clipboard.\n"; *m_log << "Successfully retrieved data from the clipboard.\n";
*m_multitext << data.GetText() << "\n"; *m_multitext << data.GetText() << "\n";

View File

@@ -167,7 +167,7 @@ void yyerror(char *s)
#ifndef yywrap #ifndef yywrap
#define yywrap() 1 #define yywrap() 1
#endif #endif
#else if !defined(__alpha___) && !defined(__alpha) && !defined(__ultrix) #elif !defined(__alpha___) && !defined(__alpha) && !defined(__ultrix)
int yywrap() { return 1; } int yywrap() { return 1; }
#endif #endif
#elif defined(__WX_SETUP_H__) #elif defined(__WX_SETUP_H__)

View File

@@ -4,9 +4,14 @@
Read unzip.h for more info Read unzip.h for more info
*/ */
#if 0
for what compiler ?
#if !defined(__VISAGECPP__) #if !defined(__VISAGECPP__)
# pragma warning(disable:4001) /* non standard extension used: single line comment */ # pragma warning(disable:4001) /* non standard extension used: single line comment */
#endif #endif
#endif
#include "wx/setup.h" #include "wx/setup.h"
#if wxUSE_ZLIB && wxUSE_ZIPSTREAM #if wxUSE_ZLIB && wxUSE_ZIPSTREAM

View File

@@ -54,7 +54,7 @@ bool wxCheckListBox::IsChecked( int index ) const
wxString str = wxString(label->label,*wxConvCurrent); wxString str = wxString(label->label,*wxConvCurrent);
return (str[1] == wxT('X')); return (str.GetChar(1) == wxT('X'));
} }
wxFAIL_MSG(wxT("wrong checklistbox index")); wxFAIL_MSG(wxT("wrong checklistbox index"));
@@ -73,7 +73,7 @@ void wxCheckListBox::Check( int index, bool check )
wxString str = wxString(label->label,*wxConvCurrent); wxString str = wxString(label->label,*wxConvCurrent);
if (check == (str[1] == wxT('X'))) return; if (check == (str.GetChar(1) == wxT('X'))) return;
if (check) if (check)
str.SetChar( 1, wxT('X') ); str.SetChar( 1, wxT('X') );

View File

@@ -409,7 +409,7 @@ size_t wxChoice::AppendHelper(GtkWidget *menu, const wxString& item)
// don't call wxChoice::GetCount() from here because it doesn't work // don't call wxChoice::GetCount() from here because it doesn't work
// if we're called from ctor (and GtkMenuShell is still NULL) // if we're called from ctor (and GtkMenuShell is still NULL)
index = m_clientList.GetCount(); index = m_clientList.GetCount() - 1;
} }
if (GTK_WIDGET_REALIZED(m_widget)) if (GTK_WIDGET_REALIZED(m_widget))

View File

@@ -94,6 +94,11 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
clipboard->m_waiting = FALSE; clipboard->m_waiting = FALSE;
return; return;
} }
/*
wxDataFormat clip( selection_data->selection );
wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() );
*/
// the atoms we received, holding a list of targets (= formats) // the atoms we received, holding a list of targets (= formats)
GdkAtom *atoms = (GdkAtom *)selection_data->data; GdkAtom *atoms = (GdkAtom *)selection_data->data;
@@ -101,7 +106,11 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++) for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++)
{ {
wxDataFormat format( atoms[i] ); wxDataFormat format( atoms[i] );
/*
wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
*/
if (format == clipboard->m_targetRequested) if (format == clipboard->m_targetRequested)
{ {
clipboard->m_waiting = FALSE; clipboard->m_waiting = FALSE;
@@ -199,6 +208,8 @@ selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
/* the clipboard is no longer in our hands. we can the delete clipboard data. */ /* the clipboard is no longer in our hands. we can the delete clipboard data. */
if (wxTheClipboard->m_data) if (wxTheClipboard->m_data)
{ {
wxLogDebug( wxT("wxClipboard will get cleared" ) );
delete wxTheClipboard->m_data; delete wxTheClipboard->m_data;
wxTheClipboard->m_data = (wxDataObject*) NULL; wxTheClipboard->m_data = (wxDataObject*) NULL;
} }
@@ -398,32 +409,23 @@ bool wxClipboard::AddData( wxDataObject *data )
m_data = data; m_data = data;
/* This should happen automatically, but to be on the safe side */
m_ownsClipboard = FALSE;
m_ownsPrimarySelection = FALSE;
/* get formats from wxDataObjects */ /* get formats from wxDataObjects */
wxDataFormat *array = new wxDataFormat[ m_data->GetFormatCount() ]; wxDataFormat *array = new wxDataFormat[ m_data->GetFormatCount() ];
m_data->GetAllFormats( array ); m_data->GetAllFormats( array );
/* primary selection or clipboard */
GdkAtom clipboard = m_usePrimary ? (GdkAtom)GDK_SELECTION_PRIMARY
: g_clipboardAtom;
for (size_t i = 0; i < m_data->GetFormatCount(); i++) for (size_t i = 0; i < m_data->GetFormatCount(); i++)
{ {
GdkAtom atom = array[i]; wxLogDebug( wxT("wxClipboard now supports atom %s"), array[i].GetId().c_str() );
wxLogDebug( wxT("Clipboard Supported atom %s"), gdk_atom_name( atom ) );
/* Add handlers if someone requests data. We currently always gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
offer data to the clipboard and the primary selection. Maybe clipboard,
we should make that depend on the usePrimary flag */ array[i],
0 ); /* what is info ? */
gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
GDK_SELECTION_PRIMARY,
atom,
0 ); /* what is info ? */
gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
g_clipboardAtom,
atom,
0 ); /* what is info ? */
} }
delete[] array; delete[] array;
@@ -434,41 +436,26 @@ bool wxClipboard::AddData( wxDataObject *data )
(gpointer) NULL ); (gpointer) NULL );
#if wxUSE_THREADS #if wxUSE_THREADS
/* disable GUI threads */ /* disable GUI threads */
wxapp_uninstall_thread_wakeup(); wxapp_uninstall_thread_wakeup();
#endif #endif
/* Tell the world we offer clipboard data */ /* Tell the world we offer clipboard data */
if (!gtk_selection_owner_set( m_clipboardWidget, bool res = (gtk_selection_owner_set( m_clipboardWidget,
g_clipboardAtom, clipboard,
GDK_CURRENT_TIME )) GDK_CURRENT_TIME ));
{
#if wxUSE_THREADS
/* re-enable GUI threads */
wxapp_install_thread_wakeup();
#endif
return FALSE;
}
m_ownsClipboard = TRUE;
if (!gtk_selection_owner_set( m_clipboardWidget, if (m_usePrimary)
GDK_SELECTION_PRIMARY, m_ownsPrimarySelection = res;
GDK_CURRENT_TIME )) else
{ m_ownsClipboard = res;
#if wxUSE_THREADS
/* re-enable GUI threads */
wxapp_install_thread_wakeup();
#endif
return FALSE;
}
m_ownsPrimarySelection = TRUE;
#if wxUSE_THREADS #if wxUSE_THREADS
/* re-enable GUI threads */ /* re-enable GUI threads */
wxapp_install_thread_wakeup(); wxapp_install_thread_wakeup();
#endif #endif
return TRUE; return res;
} }
void wxClipboard::Close() void wxClipboard::Close()
@@ -530,11 +517,36 @@ bool wxClipboard::GetData( wxDataObject& data )
{ {
wxDataFormat format( array[i] ); wxDataFormat format( array[i] );
wxLogDebug( wxT("wxClipboard::GetData: request format %s"), format.GetId().c_str() ); wxLogDebug( wxT("wxClipboard::GetData: requested format: %s"), format.GetId().c_str() );
/* is data supported by clipboard ? */ /* is data supported by clipboard ? */
if (!IsSupported( format ))
continue; /* store requested format to be asked for by callbacks */
m_targetRequested = format;
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
m_formatSupported = FALSE;
/* perform query. this will set m_formatSupported to
TRUE if m_targetRequested is supported.
also, we have to wait for the "answer" from the
clipboard owner which is an asynchronous process.
therefore we set m_waiting = TRUE here and wait
until the callback "targets_selection_received"
sets it to FALSE */
m_waiting = TRUE;
gtk_selection_convert( m_targetsWidget,
m_usePrimary ? (GdkAtom)GDK_SELECTION_PRIMARY
: g_clipboardAtom,
g_targetsAtom,
GDK_CURRENT_TIME );
while (m_waiting) gtk_main_iteration();
if (!m_formatSupported) continue;
/* store pointer to data object to be filled up by callbacks */ /* store pointer to data object to be filled up by callbacks */
m_receivedData = &data; m_receivedData = &data;
@@ -576,6 +588,8 @@ bool wxClipboard::GetData( wxDataObject& data )
return TRUE; return TRUE;
} }
wxLogDebug( wxT("wxClipboard::GetData: format not found") );
/* return failure */ /* return failure */
delete[] array; delete[] array;
return FALSE; return FALSE;

View File

@@ -463,6 +463,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags )
m_height = height; m_height = height;
} }
/*
if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
{ {
if (width == -1) m_width = 80; if (width == -1) m_width = 80;
@@ -472,6 +473,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags )
{ {
if (height == -1) m_height = 26; if (height == -1) m_height = 26;
} }
*/
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; 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_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;

View File

@@ -378,10 +378,10 @@ wxDragResult wxDropTarget::OnData( wxCoord WXUNUSED(x), wxCoord WXUNUSED(y),
wxDragResult def ) wxDragResult def )
{ {
if (!m_dataObject) if (!m_dataObject)
return FALSE; return wxDragNone;
if (GetMatchingPair() == (GdkAtom) 0) if (GetMatchingPair() == (GdkAtom) 0)
return FALSE; return wxDragNone;
return GetData() ? def : wxDragNone; return GetData() ? def : wxDragNone;
} }
@@ -401,8 +401,7 @@ GdkAtom wxDropTarget::GetMatchingPair()
wxDataFormat format( formatAtom ); wxDataFormat format( formatAtom );
#ifdef __WXDEBUG__ #ifdef __WXDEBUG__
char *name = gdk_atom_name( formatAtom ); wxLogDebug("Drop target: drag has format: %s", format.GetId().c_str() );
wxLogDebug("Drop target: drag has format: %s", name ? name : "unnamed");
#endif // Debug #endif // Debug
if (m_dataObject->IsSupportedFormat( format )) if (m_dataObject->IsSupportedFormat( format ))

View File

@@ -543,6 +543,7 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
m_height = height; m_height = height;
} }
/*
if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
{ {
if (width == -1) m_width = 80; if (width == -1) m_width = 80;
@@ -552,6 +553,7 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
{ {
if (height == -1) m_height = 26; if (height == -1) m_height = 26;
} }
*/
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; 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_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
@@ -613,6 +615,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
#if wxUSE_TOOLBAR #if wxUSE_TOOLBAR
/* tool bar */ /* tool bar */
/*
if (m_frameToolBar) if (m_frameToolBar)
{ {
if (!m_toolBarDetached) if (!m_toolBarDetached)
@@ -624,6 +627,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
else else
(*height) -= wxPLACE_HOLDER; (*height) -= wxPLACE_HOLDER;
} }
*/
#endif #endif
/* mini edge */ /* mini edge */
@@ -639,6 +643,8 @@ void wxFrame::DoSetClientSize( int width, int height )
{ {
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") ); wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
printf( "set size %d %d\n", width, height );
/* menu bar */ /* menu bar */
if (m_frameMenuBar) if (m_frameMenuBar)
{ {
@@ -655,6 +661,7 @@ void wxFrame::DoSetClientSize( int width, int height )
#if wxUSE_TOOLBAR #if wxUSE_TOOLBAR
/* tool bar */ /* tool bar */
/*
if (m_frameToolBar) if (m_frameToolBar)
{ {
if (!m_toolBarDetached) if (!m_toolBarDetached)
@@ -666,6 +673,7 @@ void wxFrame::DoSetClientSize( int width, int height )
else else
height += wxPLACE_HOLDER; height += wxPLACE_HOLDER;
} }
*/
#endif #endif
DoSetSize( -1, -1, width + m_miniEdge*2, height + m_miniEdge*2 + m_miniTitle, 0 ); DoSetSize( -1, -1, width + m_miniEdge*2, height + m_miniEdge*2 + m_miniTitle, 0 );
@@ -729,7 +737,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
} }
#if wxUSE_TOOLBAR #if wxUSE_TOOLBAR
if (m_frameToolBar) if ((m_frameToolBar) &&
(m_frameToolBar->m_widget->parent == m_mainWidget))
{ {
int xx = m_miniEdge; int xx = m_miniEdge;
int yy = m_miniEdge + m_miniTitle; int yy = m_miniEdge + m_miniTitle;
@@ -745,8 +754,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
if (m_toolBarDetached) hh = wxPLACE_HOLDER; if (m_toolBarDetached) hh = wxPLACE_HOLDER;
m_frameToolBar->m_x = xx; m_frameToolBar->m_x = xx;
m_frameToolBar->m_y = yy; m_frameToolBar->m_y = yy;
/* m_frameToolBar->m_height = hh; don't change the toolbar's height */ /* m_frameToolBar->m_height = hh; don't change the toolbar's reported size
m_frameToolBar->m_width = ww; m_frameToolBar->m_width = ww; */
gtk_myfixed_set_size( GTK_MYFIXED(m_mainWidget), gtk_myfixed_set_size( GTK_MYFIXED(m_mainWidget),
m_frameToolBar->m_widget, m_frameToolBar->m_widget,
xx, yy, ww, hh ); xx, yy, ww, hh );

View File

@@ -144,7 +144,7 @@ gtk_listbox_button_press_callback( GtkWidget *widget,
if (!listbox->m_hasVMT) return FALSE; if (!listbox->m_hasVMT) return FALSE;
int sel = listbox->GetIndex( widget ); int sel = listbox->GtkGetIndex( widget );
#if wxUSE_CHECKLISTBOX #if wxUSE_CHECKLISTBOX
if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS)) if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS))
@@ -182,7 +182,7 @@ gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxLis
if (gdk_event->keyval != ' ') return FALSE; if (gdk_event->keyval != ' ') return FALSE;
int sel = listbox->GetIndex( widget ); int sel = listbox->GtkGetIndex( widget );
wxCheckListBox *clb = (wxCheckListBox *)listbox; wxCheckListBox *clb = (wxCheckListBox *)listbox;
@@ -322,53 +322,8 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
for (int i = 0; i < n; i++) for (int i = 0; i < n; i++)
{ {
// add one by one
DoAppend(choices[i]); DoAppend(choices[i]);
#if 0
wxString str(choices[i]);
#if wxUSE_CHECKLISTBOX
if (m_hasCheckBoxes)
{
str.Prepend(CHECKBOX_STRING);
}
#endif // wxUSE_CHECKLISTBOX
GtkWidget *list_item = gtk_list_item_new_with_label( str.mbc_str() );
gtk_container_add( GTK_CONTAINER(m_list), list_item );
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
if (style & wxLB_MULTIPLE)
gtk_signal_connect( GTK_OBJECT(list_item), "deselect",
GTK_SIGNAL_FUNC(gtk_listitem_deselect_callback), (gpointer)this );
gtk_signal_connect( GTK_OBJECT(list_item),
"button_press_event",
(GtkSignalFunc)gtk_listbox_button_press_callback,
(gpointer) this );
gtk_signal_connect_after( GTK_OBJECT(list_item),
"button_release_event",
(GtkSignalFunc)gtk_listbox_button_release_callback,
(gpointer) this );
#if wxUSE_CHECKLISTBOX
if (m_hasCheckBoxes)
{
gtk_signal_connect( GTK_OBJECT(list_item),
"key_press_event",
(GtkSignalFunc)gtk_listbox_key_press_callback,
(gpointer)this );
}
#endif // wxUSE_CHECKLISTBOX
ConnectWidget( list_item );
gtk_widget_show( list_item );
#endif // 0
} }
m_parent->DoAddChild( this ); m_parent->DoAddChild( this );
@@ -393,129 +348,73 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
{ {
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
// code elsewhere supposes we have as many items in m_clientData as items
// in the listbox
wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
wxT("bug in client data management") );
GList *children = m_list->children;
int length = g_list_length(children);
wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") );
// VZ: it seems that GTK 1.0.6 doesn't has a function to insert an item
// into a listbox at the given position, this is why we first delete
// all items after this position, then append these items and then
// reappend back the old ones.
// VZ: notice that InsertItems knows nothing about sorting, so calling it // VZ: notice that InsertItems knows nothing about sorting, so calling it
// from outside (and not from our own Append) is likely to break // from outside (and not from our own Append) is likely to break
// everything // everything
// code elsewhere supposes we have as many items in m_clientList as items
// in the listbox
wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(),
wxT("bug in client data management") );
GList *children = m_list->children;
int length = g_list_length(children);
wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") );
size_t nItems = items.GetCount(); size_t nItems = items.GetCount();
size_t n; // loop var if (pos == length)
// optimise for this trivial case
if ( pos == length )
{ {
// no need to do anything complicated for ( size_t n = 0; n < nItems; n++ )
for ( n = 0; n < nItems; n++ )
{ {
AppendWithoutSorting(items[n]); GtkAddItem( items[n] );
m_clientData.Append((wxObject *)NULL); m_clientList.Append((wxObject *)NULL);
} }
}
else
{
wxNode *node = m_clientList.Nth( pos );
for ( size_t n = 0; n < nItems; n++ )
{
GtkAddItem( items[n], pos+n );
wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(), m_clientList.Insert( node, (wxObject *)NULL );
}
}
wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(),
wxT("bug in client data management") ); wxT("bug in client data management") );
return;
}
// remove the old items
wxArrayString deletedLabels;
#if wxUSE_CHECKLISTBOX
wxArrayInt deletedChecks;
#endif
GList *child = g_list_nth( children, pos );
for ( n = 0; child != NULL; n++, child = child->next )
{
// save label
GtkBin *bin = GTK_BIN( child->data );
GtkLabel *label = GTK_LABEL( bin->child );
wxString str(GET_REAL_LABEL(label->label),*wxConvCurrent);
deletedLabels.Add(str);
#if wxUSE_CHECKLISTBOX
// save check state
if ( m_hasCheckBoxes )
{
deletedChecks.Add(((wxCheckListBox *)this)->IsChecked(pos + n));
}
#endif // wxUSE_CHECKLISTBOX
}
size_t nDeletedCount = n;
gtk_list_clear_items( m_list, pos, length );
// now append the new items
wxNode *node = m_clientData.Item(pos);
for ( n = 0; n < nItems; n++ )
{
AppendWithoutSorting(items[n]);
// make sure we have the correct number of items in this list
m_clientData.Insert(node, (wxObject *)NULL);
}
// and append the old items too
pos += nItems; // now the indices are shifted
for ( n = 0; n < nDeletedCount; n++ )
{
AppendWithoutSorting(deletedLabels[n]);
// the data is already correct - the indices have been rearranged in
// such manner that we now correspond to the same node as before
#if wxUSE_CHECKLISTBOX
if ( m_hasCheckBoxes )
{
((wxCheckListBox *)this)->Check(pos + n, (bool)deletedChecks[n]);
}
#endif // wxUSE_CHECKLISTBOX
}
wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
wxT("bug in client data management") );
} }
int wxListBox::DoAppend( const wxString& item ) int wxListBox::DoAppend( const wxString& item )
{ {
int index; if (m_strings)
if ( m_strings )
{ {
// need to determine the index // need to determine the index
index = m_strings->Add(item); int index = m_strings->Add( item );
InsertItems(1, &item, index); // only if not at the end anyway
if (index != GetCount())
{
GtkAddItem( item, index );
wxNode *node = m_clientList.Nth( index );
m_clientList.Insert( node, (wxObject *)NULL );
return index;
}
} }
else
{ GtkAddItem(item);
// not sorted, just append
AppendWithoutSorting(item);
m_clientData.Append((wxObject *)NULL); m_clientList.Append((wxObject *)NULL);
index = GetCount() - 1; return GetCount() - 1;
}
return index;
} }
void wxListBox::AppendWithoutSorting( const wxString &item ) void wxListBox::GtkAddItem( const wxString &item, int pos )
{ {
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
@@ -531,7 +430,13 @@ void wxListBox::AppendWithoutSorting( const wxString &item )
list_item = gtk_list_item_new_with_label( label.mbc_str() ); list_item = gtk_list_item_new_with_label( label.mbc_str() );
gtk_container_add( GTK_CONTAINER(m_list), list_item ); GList *gitem_list = g_list_alloc ();
gitem_list->data = list_item;
if (pos == -1)
gtk_list_append_items( GTK_LIST (m_list), gitem_list );
else
gtk_list_insert_items( GTK_LIST (m_list), gitem_list, pos );
gtk_signal_connect( GTK_OBJECT(list_item), "select", gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
@@ -569,21 +474,15 @@ void wxListBox::AppendWithoutSorting( const wxString &item )
gtk_widget_realize( list_item ); gtk_widget_realize( list_item );
gtk_widget_realize( GTK_BIN(list_item)->child ); gtk_widget_realize( GTK_BIN(list_item)->child );
//if (m_widgetStyle) ApplyWidgetStyle(); // Apply current widget style to the new list_item
if (m_widgetStyle) { if (m_widgetStyle)
// Apply current widget style to the new list_item {
gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle ); gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle );
GtkBin *bin = GTK_BIN( list_item ); GtkBin *bin = GTK_BIN( list_item );
GtkWidget *label = GTK_WIDGET( bin->child ); GtkWidget *label = GTK_WIDGET( bin->child );
gtk_widget_set_style( label, m_widgetStyle ); gtk_widget_set_style( label, m_widgetStyle );
} }
#if wxUSE_DRAG_AND_DROP
#ifndef NEW_GTK_DND_CODE
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
#endif
#endif
#if wxUSE_TOOLTIPS #if wxUSE_TOOLTIPS
if (m_tooltip) m_tooltip->Apply( this ); if (m_tooltip) m_tooltip->Apply( this );
#endif #endif
@@ -615,7 +514,7 @@ void wxListBox::DoSetItemClientData( int n, void* clientData )
{ {
wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") ); wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") ); wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") );
node->SetData( (wxObject*) clientData ); node->SetData( (wxObject*) clientData );
@@ -625,7 +524,7 @@ void* wxListBox::DoGetItemClientData( int n ) const
{ {
wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") ); wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") ); wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") );
return node->Data(); return node->Data();
@@ -635,7 +534,7 @@ void wxListBox::DoSetItemClientObject( int n, wxClientData* clientData )
{ {
wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") ); wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") ); wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") );
wxClientData *cd = (wxClientData*) node->Data(); wxClientData *cd = (wxClientData*) node->Data();
@@ -648,7 +547,7 @@ wxClientData* wxListBox::DoGetItemClientObject( int n ) const
{ {
wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") ); wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
wxCHECK_MSG( node, (wxClientData *)NULL, wxCHECK_MSG( node, (wxClientData *)NULL,
wxT("invalid index in wxListBox::DoGetItemClientObject") ); wxT("invalid index in wxListBox::DoGetItemClientObject") );
@@ -666,14 +565,14 @@ void wxListBox::Clear()
// destroy the data (due to Robert's idea of using wxList<wxObject> // destroy the data (due to Robert's idea of using wxList<wxObject>
// and not wxList<wxClientData> we can't just say // and not wxList<wxClientData> we can't just say
// m_clientList.DeleteContents(TRUE) - this would crash! // m_clientList.DeleteContents(TRUE) - this would crash!
wxNode *node = m_clientData.First(); wxNode *node = m_clientList.First();
while ( node ) while ( node )
{ {
delete (wxClientData *)node->Data(); delete (wxClientData *)node->Data();
node = node->Next(); node = node->Next();
} }
} }
m_clientData.Clear(); m_clientList.Clear();
if ( m_strings ) if ( m_strings )
m_strings->Clear(); m_strings->Clear();
@@ -691,7 +590,7 @@ void wxListBox::Delete( int n )
gtk_list_remove_items( m_list, list ); gtk_list_remove_items( m_list, list );
g_list_free( list ); g_list_free( list );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
if ( node ) if ( node )
{ {
if ( m_clientDataItemsType == ClientData_Object ) if ( m_clientDataItemsType == ClientData_Object )
@@ -700,7 +599,7 @@ void wxListBox::Delete( int n )
delete cd; delete cd;
} }
m_clientData.DeleteNode( node ); m_clientList.DeleteNode( node );
} }
if ( m_strings ) if ( m_strings )
@@ -760,15 +659,8 @@ int wxListBox::GetCount() const
{ {
wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") ); wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") );
GList *child = m_list->children; GList *children = m_list->children;
int count = 0; return g_list_length(children);
while (child)
{
count++;
child = child->next;
}
return count;
} }
int wxListBox::FindString( const wxString &item ) const int wxListBox::FindString( const wxString &item ) const
@@ -869,14 +761,14 @@ void wxListBox::SetSelection( int n, bool select )
{ {
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
DisableEvents(); GtkDisableEvents();
if (select) if (select)
gtk_list_select_item( m_list, n ); gtk_list_select_item( m_list, n );
else else
gtk_list_unselect_item( m_list, n ); gtk_list_unselect_item( m_list, n );
EnableEvents(); GtkEnableEvents();
} }
void wxListBox::DoSetFirstItem( int WXUNUSED(n) ) void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
@@ -888,7 +780,7 @@ void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
// helpers // helpers
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
int wxListBox::GetIndex( GtkWidget *item ) const int wxListBox::GtkGetIndex( GtkWidget *item ) const
{ {
if (item) if (item)
{ {
@@ -916,40 +808,7 @@ void wxListBox::ApplyToolTip( GtkTooltips *tips, const wxChar *tip )
} }
#endif // wxUSE_TOOLTIPS #endif // wxUSE_TOOLTIPS
#if wxUSE_DRAG_AND_DROP void wxListBox::GtkDisableEvents()
void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
{
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
#ifndef NEW_GTK_DND_CODE
if (m_dropTarget)
{
GList *child = m_list->children;
while (child)
{
m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
child = child->next;
}
}
#endif
wxWindow::SetDropTarget( dropTarget );
#ifndef NEW_GTK_DND_CODE
if (m_dropTarget)
{
GList *child = m_list->children;
while (child)
{
m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
child = child->next;
}
}
#endif
}
#endif
void wxListBox::DisableEvents()
{ {
GList *child = m_list->children; GList *child = m_list->children;
while (child) while (child)
@@ -965,7 +824,7 @@ void wxListBox::DisableEvents()
} }
} }
void wxListBox::EnableEvents() void wxListBox::GtkEnableEvents()
{ {
GList *child = m_list->children; GList *child = m_list->children;
while (child) while (child)

View File

@@ -281,7 +281,6 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title
{ {
style = style | wxSIMPLE_BORDER; style = style | wxSIMPLE_BORDER;
style = style | wxCAPTION; style = style | wxCAPTION;
style = style | wxSYSTEM_MENU;
if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT)) if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT))
m_miniTitle = 13; m_miniTitle = 13;

View File

@@ -54,7 +54,7 @@ bool wxCheckListBox::IsChecked( int index ) const
wxString str = wxString(label->label,*wxConvCurrent); wxString str = wxString(label->label,*wxConvCurrent);
return (str[1] == wxT('X')); return (str.GetChar(1) == wxT('X'));
} }
wxFAIL_MSG(wxT("wrong checklistbox index")); wxFAIL_MSG(wxT("wrong checklistbox index"));
@@ -73,7 +73,7 @@ void wxCheckListBox::Check( int index, bool check )
wxString str = wxString(label->label,*wxConvCurrent); wxString str = wxString(label->label,*wxConvCurrent);
if (check == (str[1] == wxT('X'))) return; if (check == (str.GetChar(1) == wxT('X'))) return;
if (check) if (check)
str.SetChar( 1, wxT('X') ); str.SetChar( 1, wxT('X') );

View File

@@ -409,7 +409,7 @@ size_t wxChoice::AppendHelper(GtkWidget *menu, const wxString& item)
// don't call wxChoice::GetCount() from here because it doesn't work // don't call wxChoice::GetCount() from here because it doesn't work
// if we're called from ctor (and GtkMenuShell is still NULL) // if we're called from ctor (and GtkMenuShell is still NULL)
index = m_clientList.GetCount(); index = m_clientList.GetCount() - 1;
} }
if (GTK_WIDGET_REALIZED(m_widget)) if (GTK_WIDGET_REALIZED(m_widget))

View File

@@ -94,6 +94,11 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
clipboard->m_waiting = FALSE; clipboard->m_waiting = FALSE;
return; return;
} }
/*
wxDataFormat clip( selection_data->selection );
wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() );
*/
// the atoms we received, holding a list of targets (= formats) // the atoms we received, holding a list of targets (= formats)
GdkAtom *atoms = (GdkAtom *)selection_data->data; GdkAtom *atoms = (GdkAtom *)selection_data->data;
@@ -101,7 +106,11 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++) for (unsigned int i=0; i<selection_data->length/sizeof(GdkAtom); i++)
{ {
wxDataFormat format( atoms[i] ); wxDataFormat format( atoms[i] );
/*
wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
*/
if (format == clipboard->m_targetRequested) if (format == clipboard->m_targetRequested)
{ {
clipboard->m_waiting = FALSE; clipboard->m_waiting = FALSE;
@@ -199,6 +208,8 @@ selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
/* the clipboard is no longer in our hands. we can the delete clipboard data. */ /* the clipboard is no longer in our hands. we can the delete clipboard data. */
if (wxTheClipboard->m_data) if (wxTheClipboard->m_data)
{ {
wxLogDebug( wxT("wxClipboard will get cleared" ) );
delete wxTheClipboard->m_data; delete wxTheClipboard->m_data;
wxTheClipboard->m_data = (wxDataObject*) NULL; wxTheClipboard->m_data = (wxDataObject*) NULL;
} }
@@ -398,32 +409,23 @@ bool wxClipboard::AddData( wxDataObject *data )
m_data = data; m_data = data;
/* This should happen automatically, but to be on the safe side */
m_ownsClipboard = FALSE;
m_ownsPrimarySelection = FALSE;
/* get formats from wxDataObjects */ /* get formats from wxDataObjects */
wxDataFormat *array = new wxDataFormat[ m_data->GetFormatCount() ]; wxDataFormat *array = new wxDataFormat[ m_data->GetFormatCount() ];
m_data->GetAllFormats( array ); m_data->GetAllFormats( array );
/* primary selection or clipboard */
GdkAtom clipboard = m_usePrimary ? (GdkAtom)GDK_SELECTION_PRIMARY
: g_clipboardAtom;
for (size_t i = 0; i < m_data->GetFormatCount(); i++) for (size_t i = 0; i < m_data->GetFormatCount(); i++)
{ {
GdkAtom atom = array[i]; wxLogDebug( wxT("wxClipboard now supports atom %s"), array[i].GetId().c_str() );
wxLogDebug( wxT("Clipboard Supported atom %s"), gdk_atom_name( atom ) );
/* Add handlers if someone requests data. We currently always gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
offer data to the clipboard and the primary selection. Maybe clipboard,
we should make that depend on the usePrimary flag */ array[i],
0 ); /* what is info ? */
gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
GDK_SELECTION_PRIMARY,
atom,
0 ); /* what is info ? */
gtk_selection_add_target( GTK_WIDGET(m_clipboardWidget),
g_clipboardAtom,
atom,
0 ); /* what is info ? */
} }
delete[] array; delete[] array;
@@ -434,41 +436,26 @@ bool wxClipboard::AddData( wxDataObject *data )
(gpointer) NULL ); (gpointer) NULL );
#if wxUSE_THREADS #if wxUSE_THREADS
/* disable GUI threads */ /* disable GUI threads */
wxapp_uninstall_thread_wakeup(); wxapp_uninstall_thread_wakeup();
#endif #endif
/* Tell the world we offer clipboard data */ /* Tell the world we offer clipboard data */
if (!gtk_selection_owner_set( m_clipboardWidget, bool res = (gtk_selection_owner_set( m_clipboardWidget,
g_clipboardAtom, clipboard,
GDK_CURRENT_TIME )) GDK_CURRENT_TIME ));
{
#if wxUSE_THREADS
/* re-enable GUI threads */
wxapp_install_thread_wakeup();
#endif
return FALSE;
}
m_ownsClipboard = TRUE;
if (!gtk_selection_owner_set( m_clipboardWidget, if (m_usePrimary)
GDK_SELECTION_PRIMARY, m_ownsPrimarySelection = res;
GDK_CURRENT_TIME )) else
{ m_ownsClipboard = res;
#if wxUSE_THREADS
/* re-enable GUI threads */
wxapp_install_thread_wakeup();
#endif
return FALSE;
}
m_ownsPrimarySelection = TRUE;
#if wxUSE_THREADS #if wxUSE_THREADS
/* re-enable GUI threads */ /* re-enable GUI threads */
wxapp_install_thread_wakeup(); wxapp_install_thread_wakeup();
#endif #endif
return TRUE; return res;
} }
void wxClipboard::Close() void wxClipboard::Close()
@@ -530,11 +517,36 @@ bool wxClipboard::GetData( wxDataObject& data )
{ {
wxDataFormat format( array[i] ); wxDataFormat format( array[i] );
wxLogDebug( wxT("wxClipboard::GetData: request format %s"), format.GetId().c_str() ); wxLogDebug( wxT("wxClipboard::GetData: requested format: %s"), format.GetId().c_str() );
/* is data supported by clipboard ? */ /* is data supported by clipboard ? */
if (!IsSupported( format ))
continue; /* store requested format to be asked for by callbacks */
m_targetRequested = format;
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
m_formatSupported = FALSE;
/* perform query. this will set m_formatSupported to
TRUE if m_targetRequested is supported.
also, we have to wait for the "answer" from the
clipboard owner which is an asynchronous process.
therefore we set m_waiting = TRUE here and wait
until the callback "targets_selection_received"
sets it to FALSE */
m_waiting = TRUE;
gtk_selection_convert( m_targetsWidget,
m_usePrimary ? (GdkAtom)GDK_SELECTION_PRIMARY
: g_clipboardAtom,
g_targetsAtom,
GDK_CURRENT_TIME );
while (m_waiting) gtk_main_iteration();
if (!m_formatSupported) continue;
/* store pointer to data object to be filled up by callbacks */ /* store pointer to data object to be filled up by callbacks */
m_receivedData = &data; m_receivedData = &data;
@@ -576,6 +588,8 @@ bool wxClipboard::GetData( wxDataObject& data )
return TRUE; return TRUE;
} }
wxLogDebug( wxT("wxClipboard::GetData: format not found") );
/* return failure */ /* return failure */
delete[] array; delete[] array;
return FALSE; return FALSE;

View File

@@ -463,6 +463,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags )
m_height = height; m_height = height;
} }
/*
if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
{ {
if (width == -1) m_width = 80; if (width == -1) m_width = 80;
@@ -472,6 +473,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags )
{ {
if (height == -1) m_height = 26; if (height == -1) m_height = 26;
} }
*/
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; 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_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;

View File

@@ -378,10 +378,10 @@ wxDragResult wxDropTarget::OnData( wxCoord WXUNUSED(x), wxCoord WXUNUSED(y),
wxDragResult def ) wxDragResult def )
{ {
if (!m_dataObject) if (!m_dataObject)
return FALSE; return wxDragNone;
if (GetMatchingPair() == (GdkAtom) 0) if (GetMatchingPair() == (GdkAtom) 0)
return FALSE; return wxDragNone;
return GetData() ? def : wxDragNone; return GetData() ? def : wxDragNone;
} }
@@ -401,8 +401,7 @@ GdkAtom wxDropTarget::GetMatchingPair()
wxDataFormat format( formatAtom ); wxDataFormat format( formatAtom );
#ifdef __WXDEBUG__ #ifdef __WXDEBUG__
char *name = gdk_atom_name( formatAtom ); wxLogDebug("Drop target: drag has format: %s", format.GetId().c_str() );
wxLogDebug("Drop target: drag has format: %s", name ? name : "unnamed");
#endif // Debug #endif // Debug
if (m_dataObject->IsSupportedFormat( format )) if (m_dataObject->IsSupportedFormat( format ))

View File

@@ -543,6 +543,7 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
m_height = height; m_height = height;
} }
/*
if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH) if ((sizeFlags & wxSIZE_AUTO_WIDTH) == wxSIZE_AUTO_WIDTH)
{ {
if (width == -1) m_width = 80; if (width == -1) m_width = 80;
@@ -552,6 +553,7 @@ void wxFrame::DoSetSize( int x, int y, int width, int height, int sizeFlags )
{ {
if (height == -1) m_height = 26; if (height == -1) m_height = 26;
} }
*/
if ((m_minWidth != -1) && (m_width < m_minWidth)) m_width = m_minWidth; 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_minHeight != -1) && (m_height < m_minHeight)) m_height = m_minHeight;
@@ -613,6 +615,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
#if wxUSE_TOOLBAR #if wxUSE_TOOLBAR
/* tool bar */ /* tool bar */
/*
if (m_frameToolBar) if (m_frameToolBar)
{ {
if (!m_toolBarDetached) if (!m_toolBarDetached)
@@ -624,6 +627,7 @@ void wxFrame::DoGetClientSize( int *width, int *height ) const
else else
(*height) -= wxPLACE_HOLDER; (*height) -= wxPLACE_HOLDER;
} }
*/
#endif #endif
/* mini edge */ /* mini edge */
@@ -639,6 +643,8 @@ void wxFrame::DoSetClientSize( int width, int height )
{ {
wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") ); wxASSERT_MSG( (m_widget != NULL), wxT("invalid frame") );
printf( "set size %d %d\n", width, height );
/* menu bar */ /* menu bar */
if (m_frameMenuBar) if (m_frameMenuBar)
{ {
@@ -655,6 +661,7 @@ void wxFrame::DoSetClientSize( int width, int height )
#if wxUSE_TOOLBAR #if wxUSE_TOOLBAR
/* tool bar */ /* tool bar */
/*
if (m_frameToolBar) if (m_frameToolBar)
{ {
if (!m_toolBarDetached) if (!m_toolBarDetached)
@@ -666,6 +673,7 @@ void wxFrame::DoSetClientSize( int width, int height )
else else
height += wxPLACE_HOLDER; height += wxPLACE_HOLDER;
} }
*/
#endif #endif
DoSetSize( -1, -1, width + m_miniEdge*2, height + m_miniEdge*2 + m_miniTitle, 0 ); DoSetSize( -1, -1, width + m_miniEdge*2, height + m_miniEdge*2 + m_miniTitle, 0 );
@@ -729,7 +737,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
} }
#if wxUSE_TOOLBAR #if wxUSE_TOOLBAR
if (m_frameToolBar) if ((m_frameToolBar) &&
(m_frameToolBar->m_widget->parent == m_mainWidget))
{ {
int xx = m_miniEdge; int xx = m_miniEdge;
int yy = m_miniEdge + m_miniTitle; int yy = m_miniEdge + m_miniTitle;
@@ -745,8 +754,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
if (m_toolBarDetached) hh = wxPLACE_HOLDER; if (m_toolBarDetached) hh = wxPLACE_HOLDER;
m_frameToolBar->m_x = xx; m_frameToolBar->m_x = xx;
m_frameToolBar->m_y = yy; m_frameToolBar->m_y = yy;
/* m_frameToolBar->m_height = hh; don't change the toolbar's height */ /* m_frameToolBar->m_height = hh; don't change the toolbar's reported size
m_frameToolBar->m_width = ww; m_frameToolBar->m_width = ww; */
gtk_myfixed_set_size( GTK_MYFIXED(m_mainWidget), gtk_myfixed_set_size( GTK_MYFIXED(m_mainWidget),
m_frameToolBar->m_widget, m_frameToolBar->m_widget,
xx, yy, ww, hh ); xx, yy, ww, hh );

View File

@@ -144,7 +144,7 @@ gtk_listbox_button_press_callback( GtkWidget *widget,
if (!listbox->m_hasVMT) return FALSE; if (!listbox->m_hasVMT) return FALSE;
int sel = listbox->GetIndex( widget ); int sel = listbox->GtkGetIndex( widget );
#if wxUSE_CHECKLISTBOX #if wxUSE_CHECKLISTBOX
if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS)) if ((listbox->m_hasCheckBoxes) && (gdk_event->x < 15) && (gdk_event->type != GDK_2BUTTON_PRESS))
@@ -182,7 +182,7 @@ gtk_listbox_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxLis
if (gdk_event->keyval != ' ') return FALSE; if (gdk_event->keyval != ' ') return FALSE;
int sel = listbox->GetIndex( widget ); int sel = listbox->GtkGetIndex( widget );
wxCheckListBox *clb = (wxCheckListBox *)listbox; wxCheckListBox *clb = (wxCheckListBox *)listbox;
@@ -322,53 +322,8 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
for (int i = 0; i < n; i++) for (int i = 0; i < n; i++)
{ {
// add one by one
DoAppend(choices[i]); DoAppend(choices[i]);
#if 0
wxString str(choices[i]);
#if wxUSE_CHECKLISTBOX
if (m_hasCheckBoxes)
{
str.Prepend(CHECKBOX_STRING);
}
#endif // wxUSE_CHECKLISTBOX
GtkWidget *list_item = gtk_list_item_new_with_label( str.mbc_str() );
gtk_container_add( GTK_CONTAINER(m_list), list_item );
gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
if (style & wxLB_MULTIPLE)
gtk_signal_connect( GTK_OBJECT(list_item), "deselect",
GTK_SIGNAL_FUNC(gtk_listitem_deselect_callback), (gpointer)this );
gtk_signal_connect( GTK_OBJECT(list_item),
"button_press_event",
(GtkSignalFunc)gtk_listbox_button_press_callback,
(gpointer) this );
gtk_signal_connect_after( GTK_OBJECT(list_item),
"button_release_event",
(GtkSignalFunc)gtk_listbox_button_release_callback,
(gpointer) this );
#if wxUSE_CHECKLISTBOX
if (m_hasCheckBoxes)
{
gtk_signal_connect( GTK_OBJECT(list_item),
"key_press_event",
(GtkSignalFunc)gtk_listbox_key_press_callback,
(gpointer)this );
}
#endif // wxUSE_CHECKLISTBOX
ConnectWidget( list_item );
gtk_widget_show( list_item );
#endif // 0
} }
m_parent->DoAddChild( this ); m_parent->DoAddChild( this );
@@ -393,129 +348,73 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
{ {
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
// code elsewhere supposes we have as many items in m_clientData as items
// in the listbox
wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
wxT("bug in client data management") );
GList *children = m_list->children;
int length = g_list_length(children);
wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") );
// VZ: it seems that GTK 1.0.6 doesn't has a function to insert an item
// into a listbox at the given position, this is why we first delete
// all items after this position, then append these items and then
// reappend back the old ones.
// VZ: notice that InsertItems knows nothing about sorting, so calling it // VZ: notice that InsertItems knows nothing about sorting, so calling it
// from outside (and not from our own Append) is likely to break // from outside (and not from our own Append) is likely to break
// everything // everything
// code elsewhere supposes we have as many items in m_clientList as items
// in the listbox
wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(),
wxT("bug in client data management") );
GList *children = m_list->children;
int length = g_list_length(children);
wxCHECK_RET( pos <= length, wxT("invalid index in wxListBox::InsertItems") );
size_t nItems = items.GetCount(); size_t nItems = items.GetCount();
size_t n; // loop var if (pos == length)
// optimise for this trivial case
if ( pos == length )
{ {
// no need to do anything complicated for ( size_t n = 0; n < nItems; n++ )
for ( n = 0; n < nItems; n++ )
{ {
AppendWithoutSorting(items[n]); GtkAddItem( items[n] );
m_clientData.Append((wxObject *)NULL); m_clientList.Append((wxObject *)NULL);
} }
}
else
{
wxNode *node = m_clientList.Nth( pos );
for ( size_t n = 0; n < nItems; n++ )
{
GtkAddItem( items[n], pos+n );
wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(), m_clientList.Insert( node, (wxObject *)NULL );
}
}
wxASSERT_MSG( m_clientList.GetCount() == (size_t)GetCount(),
wxT("bug in client data management") ); wxT("bug in client data management") );
return;
}
// remove the old items
wxArrayString deletedLabels;
#if wxUSE_CHECKLISTBOX
wxArrayInt deletedChecks;
#endif
GList *child = g_list_nth( children, pos );
for ( n = 0; child != NULL; n++, child = child->next )
{
// save label
GtkBin *bin = GTK_BIN( child->data );
GtkLabel *label = GTK_LABEL( bin->child );
wxString str(GET_REAL_LABEL(label->label),*wxConvCurrent);
deletedLabels.Add(str);
#if wxUSE_CHECKLISTBOX
// save check state
if ( m_hasCheckBoxes )
{
deletedChecks.Add(((wxCheckListBox *)this)->IsChecked(pos + n));
}
#endif // wxUSE_CHECKLISTBOX
}
size_t nDeletedCount = n;
gtk_list_clear_items( m_list, pos, length );
// now append the new items
wxNode *node = m_clientData.Item(pos);
for ( n = 0; n < nItems; n++ )
{
AppendWithoutSorting(items[n]);
// make sure we have the correct number of items in this list
m_clientData.Insert(node, (wxObject *)NULL);
}
// and append the old items too
pos += nItems; // now the indices are shifted
for ( n = 0; n < nDeletedCount; n++ )
{
AppendWithoutSorting(deletedLabels[n]);
// the data is already correct - the indices have been rearranged in
// such manner that we now correspond to the same node as before
#if wxUSE_CHECKLISTBOX
if ( m_hasCheckBoxes )
{
((wxCheckListBox *)this)->Check(pos + n, (bool)deletedChecks[n]);
}
#endif // wxUSE_CHECKLISTBOX
}
wxASSERT_MSG( m_clientData.GetCount() == (size_t)GetCount(),
wxT("bug in client data management") );
} }
int wxListBox::DoAppend( const wxString& item ) int wxListBox::DoAppend( const wxString& item )
{ {
int index; if (m_strings)
if ( m_strings )
{ {
// need to determine the index // need to determine the index
index = m_strings->Add(item); int index = m_strings->Add( item );
InsertItems(1, &item, index); // only if not at the end anyway
if (index != GetCount())
{
GtkAddItem( item, index );
wxNode *node = m_clientList.Nth( index );
m_clientList.Insert( node, (wxObject *)NULL );
return index;
}
} }
else
{ GtkAddItem(item);
// not sorted, just append
AppendWithoutSorting(item);
m_clientData.Append((wxObject *)NULL); m_clientList.Append((wxObject *)NULL);
index = GetCount() - 1; return GetCount() - 1;
}
return index;
} }
void wxListBox::AppendWithoutSorting( const wxString &item ) void wxListBox::GtkAddItem( const wxString &item, int pos )
{ {
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
@@ -531,7 +430,13 @@ void wxListBox::AppendWithoutSorting( const wxString &item )
list_item = gtk_list_item_new_with_label( label.mbc_str() ); list_item = gtk_list_item_new_with_label( label.mbc_str() );
gtk_container_add( GTK_CONTAINER(m_list), list_item ); GList *gitem_list = g_list_alloc ();
gitem_list->data = list_item;
if (pos == -1)
gtk_list_append_items( GTK_LIST (m_list), gitem_list );
else
gtk_list_insert_items( GTK_LIST (m_list), gitem_list, pos );
gtk_signal_connect( GTK_OBJECT(list_item), "select", gtk_signal_connect( GTK_OBJECT(list_item), "select",
GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this );
@@ -569,21 +474,15 @@ void wxListBox::AppendWithoutSorting( const wxString &item )
gtk_widget_realize( list_item ); gtk_widget_realize( list_item );
gtk_widget_realize( GTK_BIN(list_item)->child ); gtk_widget_realize( GTK_BIN(list_item)->child );
//if (m_widgetStyle) ApplyWidgetStyle(); // Apply current widget style to the new list_item
if (m_widgetStyle) { if (m_widgetStyle)
// Apply current widget style to the new list_item {
gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle ); gtk_widget_set_style( GTK_WIDGET( list_item ), m_widgetStyle );
GtkBin *bin = GTK_BIN( list_item ); GtkBin *bin = GTK_BIN( list_item );
GtkWidget *label = GTK_WIDGET( bin->child ); GtkWidget *label = GTK_WIDGET( bin->child );
gtk_widget_set_style( label, m_widgetStyle ); gtk_widget_set_style( label, m_widgetStyle );
} }
#if wxUSE_DRAG_AND_DROP
#ifndef NEW_GTK_DND_CODE
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
#endif
#endif
#if wxUSE_TOOLTIPS #if wxUSE_TOOLTIPS
if (m_tooltip) m_tooltip->Apply( this ); if (m_tooltip) m_tooltip->Apply( this );
#endif #endif
@@ -615,7 +514,7 @@ void wxListBox::DoSetItemClientData( int n, void* clientData )
{ {
wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") ); wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") ); wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientData") );
node->SetData( (wxObject*) clientData ); node->SetData( (wxObject*) clientData );
@@ -625,7 +524,7 @@ void* wxListBox::DoGetItemClientData( int n ) const
{ {
wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") ); wxCHECK_MSG( m_widget != NULL, NULL, wxT("invalid listbox control") );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") ); wxCHECK_MSG( node, NULL, wxT("invalid index in wxListBox::DoGetItemClientData") );
return node->Data(); return node->Data();
@@ -635,7 +534,7 @@ void wxListBox::DoSetItemClientObject( int n, wxClientData* clientData )
{ {
wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") ); wxCHECK_RET( m_widget != NULL, wxT("invalid listbox control") );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") ); wxCHECK_RET( node, wxT("invalid index in wxListBox::DoSetItemClientObject") );
wxClientData *cd = (wxClientData*) node->Data(); wxClientData *cd = (wxClientData*) node->Data();
@@ -648,7 +547,7 @@ wxClientData* wxListBox::DoGetItemClientObject( int n ) const
{ {
wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") ); wxCHECK_MSG( m_widget != NULL, (wxClientData*) NULL, wxT("invalid listbox control") );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
wxCHECK_MSG( node, (wxClientData *)NULL, wxCHECK_MSG( node, (wxClientData *)NULL,
wxT("invalid index in wxListBox::DoGetItemClientObject") ); wxT("invalid index in wxListBox::DoGetItemClientObject") );
@@ -666,14 +565,14 @@ void wxListBox::Clear()
// destroy the data (due to Robert's idea of using wxList<wxObject> // destroy the data (due to Robert's idea of using wxList<wxObject>
// and not wxList<wxClientData> we can't just say // and not wxList<wxClientData> we can't just say
// m_clientList.DeleteContents(TRUE) - this would crash! // m_clientList.DeleteContents(TRUE) - this would crash!
wxNode *node = m_clientData.First(); wxNode *node = m_clientList.First();
while ( node ) while ( node )
{ {
delete (wxClientData *)node->Data(); delete (wxClientData *)node->Data();
node = node->Next(); node = node->Next();
} }
} }
m_clientData.Clear(); m_clientList.Clear();
if ( m_strings ) if ( m_strings )
m_strings->Clear(); m_strings->Clear();
@@ -691,7 +590,7 @@ void wxListBox::Delete( int n )
gtk_list_remove_items( m_list, list ); gtk_list_remove_items( m_list, list );
g_list_free( list ); g_list_free( list );
wxNode *node = m_clientData.Nth( n ); wxNode *node = m_clientList.Nth( n );
if ( node ) if ( node )
{ {
if ( m_clientDataItemsType == ClientData_Object ) if ( m_clientDataItemsType == ClientData_Object )
@@ -700,7 +599,7 @@ void wxListBox::Delete( int n )
delete cd; delete cd;
} }
m_clientData.DeleteNode( node ); m_clientList.DeleteNode( node );
} }
if ( m_strings ) if ( m_strings )
@@ -760,15 +659,8 @@ int wxListBox::GetCount() const
{ {
wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") ); wxCHECK_MSG( m_list != NULL, -1, wxT("invalid listbox") );
GList *child = m_list->children; GList *children = m_list->children;
int count = 0; return g_list_length(children);
while (child)
{
count++;
child = child->next;
}
return count;
} }
int wxListBox::FindString( const wxString &item ) const int wxListBox::FindString( const wxString &item ) const
@@ -869,14 +761,14 @@ void wxListBox::SetSelection( int n, bool select )
{ {
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") ); wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
DisableEvents(); GtkDisableEvents();
if (select) if (select)
gtk_list_select_item( m_list, n ); gtk_list_select_item( m_list, n );
else else
gtk_list_unselect_item( m_list, n ); gtk_list_unselect_item( m_list, n );
EnableEvents(); GtkEnableEvents();
} }
void wxListBox::DoSetFirstItem( int WXUNUSED(n) ) void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
@@ -888,7 +780,7 @@ void wxListBox::DoSetFirstItem( int WXUNUSED(n) )
// helpers // helpers
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
int wxListBox::GetIndex( GtkWidget *item ) const int wxListBox::GtkGetIndex( GtkWidget *item ) const
{ {
if (item) if (item)
{ {
@@ -916,40 +808,7 @@ void wxListBox::ApplyToolTip( GtkTooltips *tips, const wxChar *tip )
} }
#endif // wxUSE_TOOLTIPS #endif // wxUSE_TOOLTIPS
#if wxUSE_DRAG_AND_DROP void wxListBox::GtkDisableEvents()
void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
{
wxCHECK_RET( m_list != NULL, wxT("invalid listbox") );
#ifndef NEW_GTK_DND_CODE
if (m_dropTarget)
{
GList *child = m_list->children;
while (child)
{
m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
child = child->next;
}
}
#endif
wxWindow::SetDropTarget( dropTarget );
#ifndef NEW_GTK_DND_CODE
if (m_dropTarget)
{
GList *child = m_list->children;
while (child)
{
m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
child = child->next;
}
}
#endif
}
#endif
void wxListBox::DisableEvents()
{ {
GList *child = m_list->children; GList *child = m_list->children;
while (child) while (child)
@@ -965,7 +824,7 @@ void wxListBox::DisableEvents()
} }
} }
void wxListBox::EnableEvents() void wxListBox::GtkEnableEvents()
{ {
GList *child = m_list->children; GList *child = m_list->children;
while (child) while (child)

View File

@@ -281,7 +281,6 @@ bool wxMiniFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title
{ {
style = style | wxSIMPLE_BORDER; style = style | wxSIMPLE_BORDER;
style = style | wxCAPTION; style = style | wxCAPTION;
style = style | wxSYSTEM_MENU;
if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT)) if ((style & wxCAPTION) || (style & wxTINY_CAPTION_HORIZ) || (style & wxTINY_CAPTION_VERT))
m_miniTitle = 13; m_miniTitle = 13;

View File

@@ -849,7 +849,7 @@ SQLDriverConnect (
break; break;
} }
sprintf (cnstr2drv, "DSN=%s;", dsn); sprintf ((char*)cnstr2drv, "DSN=%s;", dsn);
cbConnStrIn += STRLEN (cnstr2drv); cbConnStrIn += STRLEN (cnstr2drv);
STRNCAT (cnstr2drv, szConnStrIn, cbConnStrIn); STRNCAT (cnstr2drv, szConnStrIn, cbConnStrIn);
szConnStrIn = cnstr2drv; szConnStrIn = cnstr2drv;

View File

@@ -198,7 +198,7 @@ SQLDataSources (
* And find the description that goes with this entry * And find the description that goes with this entry
*/ */
_iodbcdm_getkeyvalbydsn (sect[cur_entry], strlen (sect[cur_entry]), _iodbcdm_getkeyvalbydsn (sect[cur_entry], strlen (sect[cur_entry]),
"Description", szDesc, cbDescMax); "Description", (char*) szDesc, cbDescMax);
/* /*
* Next record * Next record

View File

@@ -124,7 +124,7 @@ public:
// NB: this won't result in DISCONNECTED event being sent // NB: this won't result in DISCONNECTED event being sent
virtual bool CancelDialing(); virtual bool CancelDialing();
unsigned int GetISPNames(class wxArrayString &) const size_t GetISPNames(class wxArrayString &) const
{ return 0; } { return 0; }
// sometimes the built-in logic for determining the online status may fail, // sometimes the built-in logic for determining the online status may fail,

View File

@@ -906,7 +906,7 @@ void _GSocket_Detected_Write(GSocket *socket)
socket->m_establishing = FALSE; socket->m_establishing = FALSE;
len = sizeof(error); len = sizeof(error);
getsockopt(socket->m_fd, SOL_SOCKET, SO_ERROR, &error, &len); getsockopt(socket->m_fd, SOL_SOCKET, SO_ERROR, (void*) &error, &len);
if (error) if (error)
{ {

View File

@@ -104,9 +104,8 @@ class wxFloatBar(wxToolBar):
self.floatframe.SetToolBar(self) self.floatframe.SetToolBar(self)
self.oldcolor = self.GetBackgroundColour() self.oldcolor = self.GetBackgroundColour()
barsize = self.GetSizeTuple() barsize = self.GetSizeTuple()
# self.floatframe.SetSize(wxSize(barsize[0], barsize[1] + self.titleheight)) self.floatframe.SetSize(wxSize(barsize[0], barsize[1] + self.titleheight))
# self.floatframe.SetClientSize(wxSize(barsize[0], barsize[1])) self.floatframe.SetClientSize(wxSize(barsize[0], barsize[1]))
self.floatframe.SetClientSize(wxSize(50,200))
newpos = self.parentframe.GetPosition() newpos = self.parentframe.GetPosition()
newpos.y = newpos.y + self.titleheight newpos.y = newpos.y + self.titleheight
self.floatframe.SetPosition(newpos) self.floatframe.SetPosition(newpos)