bool m_open;
+ bool m_ownsClipboard;
+ bool m_ownsPrimarySelection;
+
wxList m_dataObjects;
- char *m_sentString,
- *m_receivedString;
- void *m_receivedTargets;
GtkWidget *m_clipboardWidget;
bool m_formatSupported;
int FindMenuItem( const wxString &menuString, const wxString &itemString ) const;
wxMenuItem* FindMenuItemById( int id ) const;
- inline wxMenuItem* FindMenuItemForId( int id ) const
+ inline wxMenuItem* FindItemForId( int id ) const
{ return FindMenuItemById( id ); }
void Check( int id, bool check );
bool m_open;
+ bool m_ownsClipboard;
+ bool m_ownsPrimarySelection;
+
wxList m_dataObjects;
- char *m_sentString,
- *m_receivedString;
- void *m_receivedTargets;
GtkWidget *m_clipboardWidget;
bool m_formatSupported;
int FindMenuItem( const wxString &menuString, const wxString &itemString ) const;
wxMenuItem* FindMenuItemById( int id ) const;
- inline wxMenuItem* FindMenuItemForId( int id ) const
+ inline wxMenuItem* FindItemForId( int id ) const
{ return FindMenuItemById( id ); }
void Check( int id, bool check );
//-----------------------------------------------------------------------------
static gint
-selection_clear( GtkWidget *WXUNUSED(widget), GdkEventSelection *WXUNUSED(event) )
+selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
{
if (!wxTheClipboard) return TRUE;
- // the clipboard is no longer in our hands. we have to delete the
- // clipboard data.
+ if (event->selection == GDK_SELECTION_PRIMARY)
+ {
+ wxTheClipboard->m_ownsPrimarySelection = FALSE;
+ }
+ else
+ if (event->selection == g_clipboardAtom)
+ {
+ wxTheClipboard->m_ownsClipboard = FALSE;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ if ((!wxTheClipboard->m_ownsPrimarySelection) &&
+ (!wxTheClipboard->m_ownsClipboard))
+ {
+ // the clipboard is no longer in our hands. we can the
+ // clipboard data.
- wxTheClipboard->m_dataObjects.Clear();
+ wxTheClipboard->m_dataObjects.Clear();
+ }
return TRUE;
}
{
m_open = FALSE;
+ m_ownsClipboard = FALSE;
+ m_ownsPrimarySelection = FALSE;
+
m_dataObjects.DeleteContents( TRUE );
m_receivedData = (wxDataObject*) NULL;
gtk_signal_connect( GTK_OBJECT(m_clipboardWidget),
"selection_clear_event",
- GTK_SIGNAL_FUNC( selection_clear ),
+ GTK_SIGNAL_FUNC( selection_clear_clip ),
(gpointer) NULL );
if (!g_clipboardAtom) g_clipboardAtom = gdk_atom_intern( "CLIPBOARD", FALSE );
/* 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 */
- 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 );
}
+ 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();
}
{
data->m_formatAtom = GetTargetAtom( data->GetFormat() );
}
+
+ // This should happen automatically
+ m_ownsClipboard = FALSE;
+ m_ownsPrimarySelection = FALSE;
+
// Add handlers if someone requests data
gtk_selection_add_handler( m_clipboardWidget,
selection_handler,
NULL );
+ gtk_selection_add_handler( m_clipboardWidget,
+ GDK_SELECTION_PRIMARY,
+ data->m_formatAtom,
+ selection_handler,
+ NULL );
+
// Tell the world we offer clipboard data
if (!gtk_selection_owner_set( m_clipboardWidget,
{
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 (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");
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");
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");
//-----------------------------------------------------------------------------
static gint
-selection_clear( GtkWidget *WXUNUSED(widget), GdkEventSelection *WXUNUSED(event) )
+selection_clear_clip( GtkWidget *WXUNUSED(widget), GdkEventSelection *event )
{
if (!wxTheClipboard) return TRUE;
- // the clipboard is no longer in our hands. we have to delete the
- // clipboard data.
+ if (event->selection == GDK_SELECTION_PRIMARY)
+ {
+ wxTheClipboard->m_ownsPrimarySelection = FALSE;
+ }
+ else
+ if (event->selection == g_clipboardAtom)
+ {
+ wxTheClipboard->m_ownsClipboard = FALSE;
+ }
+ else
+ {
+ return FALSE;
+ }
+
+ if ((!wxTheClipboard->m_ownsPrimarySelection) &&
+ (!wxTheClipboard->m_ownsClipboard))
+ {
+ // the clipboard is no longer in our hands. we can the
+ // clipboard data.
- wxTheClipboard->m_dataObjects.Clear();
+ wxTheClipboard->m_dataObjects.Clear();
+ }
return TRUE;
}
{
m_open = FALSE;
+ m_ownsClipboard = FALSE;
+ m_ownsPrimarySelection = FALSE;
+
m_dataObjects.DeleteContents( TRUE );
m_receivedData = (wxDataObject*) NULL;
gtk_signal_connect( GTK_OBJECT(m_clipboardWidget),
"selection_clear_event",
- GTK_SIGNAL_FUNC( selection_clear ),
+ GTK_SIGNAL_FUNC( selection_clear_clip ),
(gpointer) NULL );
if (!g_clipboardAtom) g_clipboardAtom = gdk_atom_intern( "CLIPBOARD", FALSE );
/* 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 */
- 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 );
}
+ 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();
}
{
data->m_formatAtom = GetTargetAtom( data->GetFormat() );
}
+
+ // This should happen automatically
+ m_ownsClipboard = FALSE;
+ m_ownsPrimarySelection = FALSE;
+
// Add handlers if someone requests data
gtk_selection_add_handler( m_clipboardWidget,
selection_handler,
NULL );
+ gtk_selection_add_handler( m_clipboardWidget,
+ GDK_SELECTION_PRIMARY,
+ data->m_formatAtom,
+ selection_handler,
+ NULL );
+
// Tell the world we offer clipboard data
if (!gtk_selection_owner_set( m_clipboardWidget,
{
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 (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");
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");
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");
--- /dev/null
+# 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
+
int GetStyle();
bool GetUnderlined();
int GetWeight();
-#ifdef __WXMSW__
void SetFaceName(const wxString& faceName);
void SetFamily(int family);
void SetPointSize(int pointSize);
void SetStyle(int style);
void SetUnderlined(bool underlined);
void SetWeight(int weight);
-#endif
};
//----------------------------------------------------------------------
int GetCap();
wxColour& GetColour();
-#ifdef __WXMSW__
- // **** This one needs to return a list of ints (wxDash)
- int GetDashes(wxDash **dashes);
- wxBitmap* GetStipple();
-#endif
int GetJoin();
int GetStyle();
int GetWidth();
bool Ok();
void SetCap(int cap_style);
void SetColour(wxColour& colour);
+ void SetJoin(int join_style);
+ void SetStyle(int style);
+ 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
- void SetJoin(int join_style);
- void SetStyle(int style);
- void SetWidth(int width);
};
//----------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////
//
// $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
+//
// wxPython 0.5.2
// Minor fixes and SWIG code generation for RR's changes. MSW and GTK
// versions are much closer now!
void Enable(int id, bool enable);
bool Enabled(int id);
int FindMenuItem(const wxString& menuString, const wxString& itemString);
-#ifdef __WXMSW__
wxMenuItem * FindItemForId(int id);
+#ifdef __WXMSW__
void EnableTop(int pos, bool enable);
wxString GetHelpString(int id);
wxString GetLabel(int id);
/////////////////////////////////////////////////////////////////////////////
//
// $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
+//
// wxPython 0.5.2
// Minor fixes and SWIG code generation for RR's changes. MSW and GTK
// versions are much closer now!