Removed Vadim's surplus code in clipboard.
wxTreeCtrl now creates its two font in the constructor. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -479,6 +479,9 @@ protected:
|
|||||||
friend class wxTreeRenameTimer;
|
friend class wxTreeRenameTimer;
|
||||||
friend class wxTreeTextCtrl;
|
friend class wxTreeTextCtrl;
|
||||||
|
|
||||||
|
wxFont m_normalFont;
|
||||||
|
wxFont m_boldFont;
|
||||||
|
|
||||||
wxGenericTreeItem *m_anchor;
|
wxGenericTreeItem *m_anchor;
|
||||||
wxGenericTreeItem *m_current, *m_key_current, *m_currentEdit;
|
wxGenericTreeItem *m_current, *m_key_current, *m_currentEdit;
|
||||||
bool m_hasFocus;
|
bool m_hasFocus;
|
||||||
|
@@ -547,6 +547,11 @@ void MyPanel::DoPasteFromClipboard()
|
|||||||
|
|
||||||
void MyPanel::DoCopyToClipboard()
|
void MyPanel::DoCopyToClipboard()
|
||||||
{
|
{
|
||||||
|
// On X11, we want to get the data from the primary selection instead
|
||||||
|
// of the normal clipboard (which isn't normal under X11 at all). This
|
||||||
|
// call has no effect under MSW.
|
||||||
|
wxTheClipboard->UsePrimarySelection();
|
||||||
|
|
||||||
wxString text( m_multitext->GetLineText(0) );
|
wxString text( m_multitext->GetLineText(0) );
|
||||||
|
|
||||||
if (text.IsEmpty())
|
if (text.IsEmpty())
|
||||||
|
@@ -523,6 +523,13 @@ void wxTreeCtrl::Init()
|
|||||||
m_dragCount = 0;
|
m_dragCount = 0;
|
||||||
|
|
||||||
m_renameTimer = new wxTreeRenameTimer( this );
|
m_renameTimer = new wxTreeRenameTimer( this );
|
||||||
|
|
||||||
|
m_normalFont = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT );
|
||||||
|
m_boldFont = wxFont( m_normalFont.GetPointSize(),
|
||||||
|
m_normalFont.GetFamily(),
|
||||||
|
m_normalFont.GetStyle(),
|
||||||
|
wxBOLD,
|
||||||
|
m_normalFont.GetUnderlined());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
|
bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
|
||||||
@@ -1406,28 +1413,8 @@ int wxTreeCtrl::GetLineHeight(wxGenericTreeItem *item) const
|
|||||||
|
|
||||||
void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
||||||
{
|
{
|
||||||
// render bold items in bold
|
|
||||||
wxFont fontOld;
|
|
||||||
wxFont fontNew;
|
|
||||||
|
|
||||||
if (item->IsBold())
|
if (item->IsBold())
|
||||||
{
|
dc.SetFont(m_boldFont);
|
||||||
fontOld = dc.GetFont();
|
|
||||||
if (fontOld.Ok())
|
|
||||||
{
|
|
||||||
// VZ: is there any better way to make a bold variant of old font?
|
|
||||||
fontNew = wxFont( fontOld.GetPointSize(),
|
|
||||||
fontOld.GetFamily(),
|
|
||||||
fontOld.GetStyle(),
|
|
||||||
wxBOLD,
|
|
||||||
fontOld.GetUnderlined());
|
|
||||||
dc.SetFont(fontNew);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wxFAIL_MSG(wxT("wxDC::GetFont() failed!"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
long text_w = 0;
|
long text_w = 0;
|
||||||
long text_h = 0;
|
long text_h = 0;
|
||||||
@@ -1460,11 +1447,8 @@ void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
|||||||
dc.DrawText( item->GetText(), image_w + item->GetX(), item->GetY()
|
dc.DrawText( item->GetText(), image_w + item->GetX(), item->GetY()
|
||||||
+ ((total_h > text_h) ? (total_h - text_h)/2 : 0));
|
+ ((total_h > text_h) ? (total_h - text_h)/2 : 0));
|
||||||
|
|
||||||
// restore normal font for bold items
|
// restore normal font
|
||||||
if (fontOld.Ok())
|
dc.SetFont( m_normalFont );
|
||||||
{
|
|
||||||
dc.SetFont( fontOld);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now y stands for the top of the item, whereas it used to stand for middle !
|
// Now y stands for the top of the item, whereas it used to stand for middle !
|
||||||
@@ -1612,9 +1596,10 @@ void wxTreeCtrl::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||||||
wxPaintDC dc(this);
|
wxPaintDC dc(this);
|
||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
|
|
||||||
dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) );
|
dc.SetFont( m_normalFont );
|
||||||
|
|
||||||
dc.SetPen( m_dottedPen );
|
dc.SetPen( m_dottedPen );
|
||||||
|
|
||||||
|
// this is now done dynamically
|
||||||
//if(GetImageList() == NULL)
|
//if(GetImageList() == NULL)
|
||||||
// m_lineHeight = (int)(dc.GetCharHeight() + 4);
|
// m_lineHeight = (int)(dc.GetCharHeight() + 4);
|
||||||
|
|
||||||
@@ -2011,33 +1996,14 @@ void wxTreeCtrl::CalculateSize( wxGenericTreeItem *item, wxDC &dc )
|
|||||||
long text_w = 0;
|
long text_w = 0;
|
||||||
long text_h = 0;
|
long text_h = 0;
|
||||||
|
|
||||||
wxFont fontOld;
|
|
||||||
wxFont fontNew;
|
|
||||||
if (item->IsBold())
|
if (item->IsBold())
|
||||||
{
|
dc.SetFont(m_boldFont);
|
||||||
fontOld = dc.GetFont();
|
|
||||||
if (fontOld.Ok())
|
|
||||||
{
|
|
||||||
// VZ: is there any better way to make a bold variant of old font?
|
|
||||||
fontNew = wxFont( fontOld.GetPointSize(),
|
|
||||||
fontOld.GetFamily(),
|
|
||||||
fontOld.GetStyle(),
|
|
||||||
wxBOLD,
|
|
||||||
fontOld.GetUnderlined());
|
|
||||||
dc.SetFont(fontNew);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wxFAIL_MSG(wxT("wxDC::GetFont() failed!"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dc.GetTextExtent( item->GetText(), &text_w, &text_h );
|
dc.GetTextExtent( item->GetText(), &text_w, &text_h );
|
||||||
text_h+=2;
|
text_h+=2;
|
||||||
|
|
||||||
// restore normal font for bold items
|
// restore normal font
|
||||||
if (fontOld.Ok())
|
dc.SetFont( m_normalFont );
|
||||||
dc.SetFont( fontOld);
|
|
||||||
|
|
||||||
int image_h = 0;
|
int image_h = 0;
|
||||||
int image_w = 0;
|
int image_w = 0;
|
||||||
@@ -2092,7 +2058,7 @@ void wxTreeCtrl::CalculatePositions()
|
|||||||
wxClientDC dc(this);
|
wxClientDC dc(this);
|
||||||
PrepareDC( dc );
|
PrepareDC( dc );
|
||||||
|
|
||||||
dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) );
|
dc.SetFont( m_normalFont );
|
||||||
|
|
||||||
dc.SetPen( m_dottedPen );
|
dc.SetPen( m_dottedPen );
|
||||||
//if(GetImageList() == NULL)
|
//if(GetImageList() == NULL)
|
||||||
|
@@ -79,31 +79,17 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
|
|||||||
if ( wxTheClipboard && selection_data->length > 0 )
|
if ( wxTheClipboard && selection_data->length > 0 )
|
||||||
{
|
{
|
||||||
/* make sure we got the data in the correct form */
|
/* make sure we got the data in the correct form */
|
||||||
|
|
||||||
// VZ: I don't know what does this mean (and GTK+ authors apparently
|
|
||||||
// don't know either, Owen Taylor writes that "Motif seems to ask
|
|
||||||
// for TARGETS atom sometimes" (??)), but it seems that xterm
|
|
||||||
// (which is not a Motif app AFAIK) does this too, so it's
|
|
||||||
// absolutely essential to support this, otherwise we can't paste
|
|
||||||
// text from xterm!
|
|
||||||
GdkAtom type = selection_data->type;
|
GdkAtom type = selection_data->type;
|
||||||
if ( type != GDK_SELECTION_TYPE_ATOM )
|
if ( type != GDK_SELECTION_TYPE_ATOM )
|
||||||
{
|
{
|
||||||
if ( strcmp(gdk_atom_name(type), "TARGETS") != 0 )
|
clipboard->m_waiting = FALSE;
|
||||||
{
|
return;
|
||||||
// don't know what this is
|
|
||||||
clipboard->m_waiting = FALSE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//else: don't know what this is, but it seems to work in the same
|
|
||||||
// way as GDK_SELECTION_TYPE_ATOM does
|
|
||||||
}
|
}
|
||||||
//else: the data is the list of formats supported by the selection
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
wxDataFormat clip( selection_data->selection );
|
wxDataFormat clip( selection_data->selection );
|
||||||
wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() );
|
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;
|
||||||
@@ -112,9 +98,9 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
wxDataFormat format( atoms[i] );
|
wxDataFormat format( atoms[i] );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
|
wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (format == clipboard->m_targetRequested)
|
if (format == clipboard->m_targetRequested)
|
||||||
{
|
{
|
||||||
@@ -484,11 +470,13 @@ bool wxClipboard::IsOpened() const
|
|||||||
bool wxClipboard::IsSupported( const wxDataFormat& format )
|
bool wxClipboard::IsSupported( const wxDataFormat& format )
|
||||||
{
|
{
|
||||||
/* reentrance problems */
|
/* reentrance problems */
|
||||||
if (m_open) return TRUE;
|
if (m_waiting) return FALSE;
|
||||||
|
|
||||||
/* store requested format to be asked for by callbacks */
|
/* store requested format to be asked for by callbacks */
|
||||||
m_targetRequested = format;
|
m_targetRequested = format;
|
||||||
|
|
||||||
|
wxLogDebug( wxT("wxClipboard:IsSupported: requested format: %s"), format.GetId().c_str() );
|
||||||
|
|
||||||
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
|
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
|
||||||
|
|
||||||
m_formatSupported = FALSE;
|
m_formatSupported = FALSE;
|
||||||
|
@@ -79,31 +79,17 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
|
|||||||
if ( wxTheClipboard && selection_data->length > 0 )
|
if ( wxTheClipboard && selection_data->length > 0 )
|
||||||
{
|
{
|
||||||
/* make sure we got the data in the correct form */
|
/* make sure we got the data in the correct form */
|
||||||
|
|
||||||
// VZ: I don't know what does this mean (and GTK+ authors apparently
|
|
||||||
// don't know either, Owen Taylor writes that "Motif seems to ask
|
|
||||||
// for TARGETS atom sometimes" (??)), but it seems that xterm
|
|
||||||
// (which is not a Motif app AFAIK) does this too, so it's
|
|
||||||
// absolutely essential to support this, otherwise we can't paste
|
|
||||||
// text from xterm!
|
|
||||||
GdkAtom type = selection_data->type;
|
GdkAtom type = selection_data->type;
|
||||||
if ( type != GDK_SELECTION_TYPE_ATOM )
|
if ( type != GDK_SELECTION_TYPE_ATOM )
|
||||||
{
|
{
|
||||||
if ( strcmp(gdk_atom_name(type), "TARGETS") != 0 )
|
clipboard->m_waiting = FALSE;
|
||||||
{
|
return;
|
||||||
// don't know what this is
|
|
||||||
clipboard->m_waiting = FALSE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//else: don't know what this is, but it seems to work in the same
|
|
||||||
// way as GDK_SELECTION_TYPE_ATOM does
|
|
||||||
}
|
}
|
||||||
//else: the data is the list of formats supported by the selection
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
wxDataFormat clip( selection_data->selection );
|
wxDataFormat clip( selection_data->selection );
|
||||||
wxLogDebug( wxT("selection received for targets, clipboard %s"), clip.GetId().c_str() );
|
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;
|
||||||
@@ -112,9 +98,9 @@ targets_selection_received( GtkWidget *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
wxDataFormat format( atoms[i] );
|
wxDataFormat format( atoms[i] );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
|
wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (format == clipboard->m_targetRequested)
|
if (format == clipboard->m_targetRequested)
|
||||||
{
|
{
|
||||||
@@ -484,11 +470,13 @@ bool wxClipboard::IsOpened() const
|
|||||||
bool wxClipboard::IsSupported( const wxDataFormat& format )
|
bool wxClipboard::IsSupported( const wxDataFormat& format )
|
||||||
{
|
{
|
||||||
/* reentrance problems */
|
/* reentrance problems */
|
||||||
if (m_open) return TRUE;
|
if (m_waiting) return FALSE;
|
||||||
|
|
||||||
/* store requested format to be asked for by callbacks */
|
/* store requested format to be asked for by callbacks */
|
||||||
m_targetRequested = format;
|
m_targetRequested = format;
|
||||||
|
|
||||||
|
wxLogDebug( wxT("wxClipboard:IsSupported: requested format: %s"), format.GetId().c_str() );
|
||||||
|
|
||||||
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
|
wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") );
|
||||||
|
|
||||||
m_formatSupported = FALSE;
|
m_formatSupported = FALSE;
|
||||||
|
Reference in New Issue
Block a user