wxClipboard now serves the primary selection as well

wxPython fixes
  warning mesages


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1239 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1998-12-18 15:49:10 +00:00
parent 95aabccc3a
commit aeeb6a44d1
11 changed files with 196 additions and 38 deletions

View File

@@ -73,10 +73,10 @@ public:
bool m_open; bool m_open;
bool m_ownsClipboard;
bool m_ownsPrimarySelection;
wxList m_dataObjects; wxList m_dataObjects;
char *m_sentString,
*m_receivedString;
void *m_receivedTargets;
GtkWidget *m_clipboardWidget; GtkWidget *m_clipboardWidget;
bool m_formatSupported; bool m_formatSupported;

View File

@@ -49,7 +49,7 @@ public:
int FindMenuItem( const wxString &menuString, const wxString &itemString ) const; int FindMenuItem( const wxString &menuString, const wxString &itemString ) const;
wxMenuItem* FindMenuItemById( int id ) const; wxMenuItem* FindMenuItemById( int id ) const;
inline wxMenuItem* FindMenuItemForId( int id ) const inline wxMenuItem* FindItemForId( int id ) const
{ return FindMenuItemById( id ); } { return FindMenuItemById( id ); }
void Check( int id, bool check ); void Check( int id, bool check );

View File

@@ -73,10 +73,10 @@ public:
bool m_open; bool m_open;
bool m_ownsClipboard;
bool m_ownsPrimarySelection;
wxList m_dataObjects; wxList m_dataObjects;
char *m_sentString,
*m_receivedString;
void *m_receivedTargets;
GtkWidget *m_clipboardWidget; GtkWidget *m_clipboardWidget;
bool m_formatSupported; bool m_formatSupported;

View File

@@ -49,7 +49,7 @@ public:
int FindMenuItem( const wxString &menuString, const wxString &itemString ) const; int FindMenuItem( const wxString &menuString, const wxString &itemString ) const;
wxMenuItem* FindMenuItemById( int id ) const; wxMenuItem* FindMenuItemById( int id ) const;
inline wxMenuItem* FindMenuItemForId( int id ) const inline wxMenuItem* FindItemForId( int id ) const
{ return FindMenuItemById( id ); } { return FindMenuItemById( id ); }
void Check( int id, bool check ); void Check( int id, bool check );

View File

@@ -152,14 +152,32 @@ selection_received( GtkWidget *WXUNUSED(widget),
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static gint static gint
selection_clear( GtkWidget *WXUNUSED(widget), GdkEventSelection *WXUNUSED(event) ) selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
{ {
if (!wxTheClipboard) return TRUE; if (!wxTheClipboard) return TRUE;
// the clipboard is no longer in our hands. we have to delete the if (event->selection == GDK_SELECTION_PRIMARY)
// clipboard data. {
wxTheClipboard->m_ownsPrimarySelection = FALSE;
}
else
if (event->selection == g_clipboardAtom)
{
wxTheClipboard->m_ownsClipboard = FALSE;
}
else
{
return FALSE;
}
wxTheClipboard->m_dataObjects.Clear(); if ((!wxTheClipboard->m_ownsPrimarySelection) &&
(!wxTheClipboard->m_ownsClipboard))
{
// the clipboard is no longer in our hands. we can the
// clipboard data.
wxTheClipboard->m_dataObjects.Clear();
}
return TRUE; return TRUE;
} }
@@ -247,6 +265,9 @@ wxClipboard::wxClipboard()
{ {
m_open = FALSE; m_open = FALSE;
m_ownsClipboard = FALSE;
m_ownsPrimarySelection = FALSE;
m_dataObjects.DeleteContents( TRUE ); m_dataObjects.DeleteContents( TRUE );
m_receivedData = (wxDataObject*) NULL; m_receivedData = (wxDataObject*) NULL;
@@ -256,7 +277,7 @@ wxClipboard::wxClipboard()
gtk_signal_connect( GTK_OBJECT(m_clipboardWidget), gtk_signal_connect( GTK_OBJECT(m_clipboardWidget),
"selection_clear_event", "selection_clear_event",
GTK_SIGNAL_FUNC( selection_clear ), GTK_SIGNAL_FUNC( selection_clear_clip ),
(gpointer) NULL ); (gpointer) NULL );
if (!g_clipboardAtom) g_clipboardAtom = gdk_atom_intern( "CLIPBOARD", FALSE ); if (!g_clipboardAtom) g_clipboardAtom = gdk_atom_intern( "CLIPBOARD", FALSE );
@@ -281,11 +302,16 @@ void wxClipboard::Clear()
/* As we have data we also own the clipboard. Once we no longer own /* As we have data we also own the clipboard. Once we no longer own
it, clear_selection is called which will set m_data to zero */ it, clear_selection is called which will set m_data to zero */
if (gdk_selection_owner_get( g_clipboardAtom) == m_clipboardWidget->window) if (gdk_selection_owner_get( g_clipboardAtom ) == m_clipboardWidget->window)
{ {
gtk_selection_owner_set( (GtkWidget*) NULL, g_clipboardAtom, GDK_CURRENT_TIME ); gtk_selection_owner_set( (GtkWidget*) NULL, g_clipboardAtom, GDK_CURRENT_TIME );
} }
if (gdk_selection_owner_get( GDK_SELECTION_PRIMARY ) == m_clipboardWidget->window)
{
gtk_selection_owner_set( (GtkWidget*) NULL, GDK_SELECTION_PRIMARY, GDK_CURRENT_TIME );
}
m_dataObjects.Clear(); m_dataObjects.Clear();
} }
@@ -339,7 +365,12 @@ bool wxClipboard::SetData( wxDataObject *data )
{ {
data->m_formatAtom = GetTargetAtom( data->GetFormat() ); data->m_formatAtom = GetTargetAtom( data->GetFormat() );
} }
// This should happen automatically
m_ownsClipboard = FALSE;
m_ownsPrimarySelection = FALSE;
// Add handlers if someone requests data // Add handlers if someone requests data
gtk_selection_add_handler( m_clipboardWidget, gtk_selection_add_handler( m_clipboardWidget,
@@ -348,6 +379,12 @@ bool wxClipboard::SetData( wxDataObject *data )
selection_handler, selection_handler,
NULL ); NULL );
gtk_selection_add_handler( m_clipboardWidget,
GDK_SELECTION_PRIMARY,
data->m_formatAtom,
selection_handler,
NULL );
// Tell the world we offer clipboard data // Tell the world we offer clipboard data
if (!gtk_selection_owner_set( m_clipboardWidget, if (!gtk_selection_owner_set( m_clipboardWidget,
@@ -356,6 +393,15 @@ bool wxClipboard::SetData( wxDataObject *data )
{ {
return FALSE; return FALSE;
} }
m_ownsClipboard = TRUE;
if (!gtk_selection_owner_set( m_clipboardWidget,
GDK_SELECTION_PRIMARY,
GDK_CURRENT_TIME ))
{
return FALSE;
}
m_ownsPrimarySelection = TRUE;
return TRUE; return TRUE;
} }

View File

@@ -86,21 +86,29 @@ bool wxPalette::Ok(void) const
return (m_refData); return (m_refData);
}; };
bool wxPalette::Create( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) bool wxPalette::Create( int WXUNUSED(n),
const unsigned char *WXUNUSED(red),
const unsigned char *WXUNUSED(green),
const unsigned char *WXUNUSED(blue) )
{ {
wxFAIL_MSG("not implemented"); wxFAIL_MSG("not implemented");
return FALSE; return FALSE;
}; };
int wxPalette::GetPixel( const unsigned char red, const unsigned char green, const unsigned char blue ) const int wxPalette::GetPixel( const unsigned char WXUNUSED(red),
const unsigned char WXUNUSED(green),
const unsigned char WXUNUSED(blue) ) const
{ {
wxFAIL_MSG("not implemented"); wxFAIL_MSG("not implemented");
return 0; return 0;
}; };
bool wxPalette::GetRGB( int pixel, unsigned char *red, unsigned char *green, unsigned char *blue ) const bool wxPalette::GetRGB( int WXUNUSED(pixel),
unsigned char *WXUNUSED(red),
unsigned char *WXUNUSED(green),
unsigned char *WXUNUSED(blue) ) const
{ {
wxFAIL_MSG("not implemented"); wxFAIL_MSG("not implemented");

View File

@@ -152,14 +152,32 @@ selection_received( GtkWidget *WXUNUSED(widget),
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static gint static gint
selection_clear( GtkWidget *WXUNUSED(widget), GdkEventSelection *WXUNUSED(event) ) selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
{ {
if (!wxTheClipboard) return TRUE; if (!wxTheClipboard) return TRUE;
// the clipboard is no longer in our hands. we have to delete the if (event->selection == GDK_SELECTION_PRIMARY)
// clipboard data. {
wxTheClipboard->m_ownsPrimarySelection = FALSE;
}
else
if (event->selection == g_clipboardAtom)
{
wxTheClipboard->m_ownsClipboard = FALSE;
}
else
{
return FALSE;
}
wxTheClipboard->m_dataObjects.Clear(); if ((!wxTheClipboard->m_ownsPrimarySelection) &&
(!wxTheClipboard->m_ownsClipboard))
{
// the clipboard is no longer in our hands. we can the
// clipboard data.
wxTheClipboard->m_dataObjects.Clear();
}
return TRUE; return TRUE;
} }
@@ -247,6 +265,9 @@ wxClipboard::wxClipboard()
{ {
m_open = FALSE; m_open = FALSE;
m_ownsClipboard = FALSE;
m_ownsPrimarySelection = FALSE;
m_dataObjects.DeleteContents( TRUE ); m_dataObjects.DeleteContents( TRUE );
m_receivedData = (wxDataObject*) NULL; m_receivedData = (wxDataObject*) NULL;
@@ -256,7 +277,7 @@ wxClipboard::wxClipboard()
gtk_signal_connect( GTK_OBJECT(m_clipboardWidget), gtk_signal_connect( GTK_OBJECT(m_clipboardWidget),
"selection_clear_event", "selection_clear_event",
GTK_SIGNAL_FUNC( selection_clear ), GTK_SIGNAL_FUNC( selection_clear_clip ),
(gpointer) NULL ); (gpointer) NULL );
if (!g_clipboardAtom) g_clipboardAtom = gdk_atom_intern( "CLIPBOARD", FALSE ); if (!g_clipboardAtom) g_clipboardAtom = gdk_atom_intern( "CLIPBOARD", FALSE );
@@ -281,11 +302,16 @@ void wxClipboard::Clear()
/* As we have data we also own the clipboard. Once we no longer own /* As we have data we also own the clipboard. Once we no longer own
it, clear_selection is called which will set m_data to zero */ it, clear_selection is called which will set m_data to zero */
if (gdk_selection_owner_get( g_clipboardAtom) == m_clipboardWidget->window) if (gdk_selection_owner_get( g_clipboardAtom ) == m_clipboardWidget->window)
{ {
gtk_selection_owner_set( (GtkWidget*) NULL, g_clipboardAtom, GDK_CURRENT_TIME ); gtk_selection_owner_set( (GtkWidget*) NULL, g_clipboardAtom, GDK_CURRENT_TIME );
} }
if (gdk_selection_owner_get( GDK_SELECTION_PRIMARY ) == m_clipboardWidget->window)
{
gtk_selection_owner_set( (GtkWidget*) NULL, GDK_SELECTION_PRIMARY, GDK_CURRENT_TIME );
}
m_dataObjects.Clear(); m_dataObjects.Clear();
} }
@@ -339,7 +365,12 @@ bool wxClipboard::SetData( wxDataObject *data )
{ {
data->m_formatAtom = GetTargetAtom( data->GetFormat() ); data->m_formatAtom = GetTargetAtom( data->GetFormat() );
} }
// This should happen automatically
m_ownsClipboard = FALSE;
m_ownsPrimarySelection = FALSE;
// Add handlers if someone requests data // Add handlers if someone requests data
gtk_selection_add_handler( m_clipboardWidget, gtk_selection_add_handler( m_clipboardWidget,
@@ -348,6 +379,12 @@ bool wxClipboard::SetData( wxDataObject *data )
selection_handler, selection_handler,
NULL ); NULL );
gtk_selection_add_handler( m_clipboardWidget,
GDK_SELECTION_PRIMARY,
data->m_formatAtom,
selection_handler,
NULL );
// Tell the world we offer clipboard data // Tell the world we offer clipboard data
if (!gtk_selection_owner_set( m_clipboardWidget, if (!gtk_selection_owner_set( m_clipboardWidget,
@@ -356,6 +393,15 @@ bool wxClipboard::SetData( wxDataObject *data )
{ {
return FALSE; return FALSE;
} }
m_ownsClipboard = TRUE;
if (!gtk_selection_owner_set( m_clipboardWidget,
GDK_SELECTION_PRIMARY,
GDK_CURRENT_TIME ))
{
return FALSE;
}
m_ownsPrimarySelection = TRUE;
return TRUE; return TRUE;
} }

View File

@@ -86,21 +86,29 @@ bool wxPalette::Ok(void) const
return (m_refData); return (m_refData);
}; };
bool wxPalette::Create( int n, const unsigned char *red, const unsigned char *green, const unsigned char *blue) bool wxPalette::Create( int WXUNUSED(n),
const unsigned char *WXUNUSED(red),
const unsigned char *WXUNUSED(green),
const unsigned char *WXUNUSED(blue) )
{ {
wxFAIL_MSG("not implemented"); wxFAIL_MSG("not implemented");
return FALSE; return FALSE;
}; };
int wxPalette::GetPixel( const unsigned char red, const unsigned char green, const unsigned char blue ) const int wxPalette::GetPixel( const unsigned char WXUNUSED(red),
const unsigned char WXUNUSED(green),
const unsigned char WXUNUSED(blue) ) const
{ {
wxFAIL_MSG("not implemented"); wxFAIL_MSG("not implemented");
return 0; return 0;
}; };
bool wxPalette::GetRGB( int pixel, unsigned char *red, unsigned char *green, unsigned char *blue ) const bool wxPalette::GetRGB( int WXUNUSED(pixel),
unsigned char *WXUNUSED(red),
unsigned char *WXUNUSED(green),
unsigned char *WXUNUSED(blue) ) const
{ {
wxFAIL_MSG("not implemented"); wxFAIL_MSG("not implemented");

41
utils/wxPython/src/Setup Normal file
View File

@@ -0,0 +1,41 @@
# This file gives the details of what is needed to build this extension
# module so the Makefile can be created.
###
### This file should be created by configure. Currently it is tweaked by hand.
###
*shared*
CCC=g++
WXWIN=~/wxWindows
GENCODEDIR=gtk
srcdir=$(GENCODEDIR)
WX_CONFIG_CFLAGS=`wx-config --cflags`
WX_CONFIG_LIBS=`wx-config --libs`
# Depending on how your Python was built, you may have to set this
# value to use the C++ driver to link with instead of the default
# C driver. For example:
MY_LDSHARED=$(CCC) -shared $(WX_CONFIG_LIBS)
# Same as above, but for statically linking Python and wxPython together,
# in other words, if you comment out the *shared* above. If this is the
# case then you should ensure that the main() function is Python's, not
# wxWindows'. You can rebuild $(WXWIN)/src/gtk/app.cpp with NOMAIN defined
# to force this...
MY_LINKCC=$(CCC)
## Pick one of these, or set your own. This is where the
## wxPython module should be installed. It should be a
## subdirectory named wxPython.
TARGETDIR=..
#TARGETDIR=$(BINLIBDEST)/site-packages/wxPython
wxc wx.cpp helpers.cpp windows.cpp events.cpp misc.cpp gdi.cpp \
mdi.cpp controls.cpp controls2.cpp windows2.cpp cmndlgs.cpp \
frames.cpp stattool.cpp utils.cpp \
-I. $(WX_CONFIG_CFLAGS) -DSWIG_GLOBAL

View File

@@ -152,14 +152,12 @@ public:
int GetStyle(); int GetStyle();
bool GetUnderlined(); bool GetUnderlined();
int GetWeight(); int GetWeight();
#ifdef __WXMSW__
void SetFaceName(const wxString& faceName); void SetFaceName(const wxString& faceName);
void SetFamily(int family); void SetFamily(int family);
void SetPointSize(int pointSize); void SetPointSize(int pointSize);
void SetStyle(int style); void SetStyle(int style);
void SetUnderlined(bool underlined); void SetUnderlined(bool underlined);
void SetWeight(int weight); void SetWeight(int weight);
#endif
}; };
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@@ -210,24 +208,23 @@ public:
int GetCap(); int GetCap();
wxColour& GetColour(); wxColour& GetColour();
#ifdef __WXMSW__
// **** This one needs to return a list of ints (wxDash)
int GetDashes(wxDash **dashes);
wxBitmap* GetStipple();
#endif
int GetJoin(); int GetJoin();
int GetStyle(); int GetStyle();
int GetWidth(); int GetWidth();
bool Ok(); bool Ok();
void SetCap(int cap_style); void SetCap(int cap_style);
void SetColour(wxColour& colour); void SetColour(wxColour& colour);
#ifdef __WXMSW__
void SetDashes(int LCOUNT, wxDash* LIST);
void SetStipple(wxBitmap& stipple);
#endif
void SetJoin(int join_style); void SetJoin(int join_style);
void SetStyle(int style); void SetStyle(int style);
void SetWidth(int width); void SetWidth(int width);
#ifdef __WXMSW__
// **** This one needs to return a list of ints (wxDash)
int GetDashes(wxDash **dashes);
wxBitmap* GetStipple();
void SetDashes(int LCOUNT, wxDash* LIST);
void SetStipple(wxBitmap& stipple);
#endif
}; };
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@@ -505,7 +502,13 @@ public:
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// $Log$ // $Log$
// Revision 1.11 1998/12/18 15:49:05 RR
// wxClipboard now serves the primary selection as well
// wxPython fixes
// warning mesages
//
// Revision 1.10 1998/12/17 18:05:50 RD // Revision 1.10 1998/12/17 18:05:50 RD
//
// wxPython 0.5.2 // wxPython 0.5.2
// Minor fixes and SWIG code generation for RR's changes. MSW and GTK // Minor fixes and SWIG code generation for RR's changes. MSW and GTK
// versions are much closer now! // versions are much closer now!

View File

@@ -310,8 +310,8 @@ public:
void Enable(int id, bool enable); void Enable(int id, bool enable);
bool Enabled(int id); bool Enabled(int id);
int FindMenuItem(const wxString& menuString, const wxString& itemString); int FindMenuItem(const wxString& menuString, const wxString& itemString);
#ifdef __WXMSW__
wxMenuItem * FindItemForId(int id); wxMenuItem * FindItemForId(int id);
#ifdef __WXMSW__
void EnableTop(int pos, bool enable); void EnableTop(int pos, bool enable);
wxString GetHelpString(int id); wxString GetHelpString(int id);
wxString GetLabel(int id); wxString GetLabel(int id);
@@ -351,7 +351,13 @@ public:
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
// $Log$ // $Log$
// Revision 1.11 1998/12/18 15:49:10 RR
// wxClipboard now serves the primary selection as well
// wxPython fixes
// warning mesages
//
// Revision 1.10 1998/12/17 17:52:20 RD // Revision 1.10 1998/12/17 17:52:20 RD
//
// wxPython 0.5.2 // wxPython 0.5.2
// Minor fixes and SWIG code generation for RR's changes. MSW and GTK // Minor fixes and SWIG code generation for RR's changes. MSW and GTK
// versions are much closer now! // versions are much closer now!