From eff869aad2585994c3a4b21b36cdf98245ab3f15 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Tue, 9 Nov 1999 14:48:41 +0000 Subject: [PATCH] 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 --- include/wx/generic/treectrl.h | 3 ++ samples/text/text.cpp | 5 +++ src/generic/treectrl.cpp | 68 +++++++++-------------------------- src/gtk/clipbrd.cpp | 30 +++++----------- src/gtk1/clipbrd.cpp | 30 +++++----------- 5 files changed, 43 insertions(+), 93 deletions(-) diff --git a/include/wx/generic/treectrl.h b/include/wx/generic/treectrl.h index 3155e83cbe..9e8bf4ed5c 100644 --- a/include/wx/generic/treectrl.h +++ b/include/wx/generic/treectrl.h @@ -479,6 +479,9 @@ protected: friend class wxTreeRenameTimer; friend class wxTreeTextCtrl; + wxFont m_normalFont; + wxFont m_boldFont; + wxGenericTreeItem *m_anchor; wxGenericTreeItem *m_current, *m_key_current, *m_currentEdit; bool m_hasFocus; diff --git a/samples/text/text.cpp b/samples/text/text.cpp index 19c5af35a5..26e87442e6 100644 --- a/samples/text/text.cpp +++ b/samples/text/text.cpp @@ -547,6 +547,11 @@ void MyPanel::DoPasteFromClipboard() 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) ); if (text.IsEmpty()) diff --git a/src/generic/treectrl.cpp b/src/generic/treectrl.cpp index 98d1ab42ea..6106aaedf8 100644 --- a/src/generic/treectrl.cpp +++ b/src/generic/treectrl.cpp @@ -523,6 +523,13 @@ void wxTreeCtrl::Init() m_dragCount = 0; 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, @@ -1406,28 +1413,8 @@ int wxTreeCtrl::GetLineHeight(wxGenericTreeItem *item) const void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc) { - // render bold items in bold - wxFont fontOld; - wxFont fontNew; - if (item->IsBold()) - { - 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.SetFont(m_boldFont); long text_w = 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() + ((total_h > text_h) ? (total_h - text_h)/2 : 0)); - // restore normal font for bold items - if (fontOld.Ok()) - { - dc.SetFont( fontOld); - } + // restore normal font + dc.SetFont( m_normalFont ); } // 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); PrepareDC( dc ); - dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) ); - + dc.SetFont( m_normalFont ); dc.SetPen( m_dottedPen ); + + // this is now done dynamically //if(GetImageList() == NULL) // m_lineHeight = (int)(dc.GetCharHeight() + 4); @@ -2011,33 +1996,14 @@ void wxTreeCtrl::CalculateSize( wxGenericTreeItem *item, wxDC &dc ) long text_w = 0; long text_h = 0; - wxFont fontOld; - wxFont fontNew; if (item->IsBold()) - { - 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.SetFont(m_boldFont); dc.GetTextExtent( item->GetText(), &text_w, &text_h ); text_h+=2; - // restore normal font for bold items - if (fontOld.Ok()) - dc.SetFont( fontOld); + // restore normal font + dc.SetFont( m_normalFont ); int image_h = 0; int image_w = 0; @@ -2092,7 +2058,7 @@ void wxTreeCtrl::CalculatePositions() wxClientDC dc(this); PrepareDC( dc ); - dc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT ) ); + dc.SetFont( m_normalFont ); dc.SetPen( m_dottedPen ); //if(GetImageList() == NULL) diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index dc4bbe9c90..9500db81e1 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -79,31 +79,17 @@ targets_selection_received( GtkWidget *WXUNUSED(widget), if ( wxTheClipboard && selection_data->length > 0 ) { /* 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; if ( type != GDK_SELECTION_TYPE_ATOM ) { - if ( strcmp(gdk_atom_name(type), "TARGETS") != 0 ) - { - // 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 + clipboard->m_waiting = FALSE; + return; } - //else: the data is the list of formats supported by the selection - /* +/* 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) GdkAtom *atoms = (GdkAtom *)selection_data->data; @@ -112,9 +98,9 @@ targets_selection_received( GtkWidget *WXUNUSED(widget), { wxDataFormat format( atoms[i] ); - /* +/* wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() ); - */ +*/ if (format == clipboard->m_targetRequested) { @@ -484,11 +470,13 @@ bool wxClipboard::IsOpened() const bool wxClipboard::IsSupported( const wxDataFormat& format ) { /* reentrance problems */ - if (m_open) return TRUE; + if (m_waiting) return FALSE; /* store requested format to be asked for by callbacks */ m_targetRequested = format; + wxLogDebug( wxT("wxClipboard:IsSupported: requested format: %s"), format.GetId().c_str() ); + wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") ); m_formatSupported = FALSE; diff --git a/src/gtk1/clipbrd.cpp b/src/gtk1/clipbrd.cpp index dc4bbe9c90..9500db81e1 100644 --- a/src/gtk1/clipbrd.cpp +++ b/src/gtk1/clipbrd.cpp @@ -79,31 +79,17 @@ targets_selection_received( GtkWidget *WXUNUSED(widget), if ( wxTheClipboard && selection_data->length > 0 ) { /* 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; if ( type != GDK_SELECTION_TYPE_ATOM ) { - if ( strcmp(gdk_atom_name(type), "TARGETS") != 0 ) - { - // 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 + clipboard->m_waiting = FALSE; + return; } - //else: the data is the list of formats supported by the selection - /* +/* 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) GdkAtom *atoms = (GdkAtom *)selection_data->data; @@ -112,9 +98,9 @@ targets_selection_received( GtkWidget *WXUNUSED(widget), { wxDataFormat format( atoms[i] ); - /* +/* wxLogDebug( wxT("selection received for targets, format %s"), format.GetId().c_str() ); - */ +*/ if (format == clipboard->m_targetRequested) { @@ -484,11 +470,13 @@ bool wxClipboard::IsOpened() const bool wxClipboard::IsSupported( const wxDataFormat& format ) { /* reentrance problems */ - if (m_open) return TRUE; + if (m_waiting) return FALSE; /* store requested format to be asked for by callbacks */ m_targetRequested = format; + wxLogDebug( wxT("wxClipboard:IsSupported: requested format: %s"), format.GetId().c_str() ); + wxCHECK_MSG( m_targetRequested, FALSE, wxT("invalid clipboard format") ); m_formatSupported = FALSE; -- 2.45.2