From 511923a974e0256515c25af1928ad99bf5dca11a Mon Sep 17 00:00:00 2001 From: JulianSmart Date: Thu, 30 Jun 2016 20:16:43 +0100 Subject: [PATCH] Scaled bitmap and selection click fixes --- src/richtext/richtextbuffer.cpp | 25 ++++++++++++++----------- src/richtext/richtextctrl.cpp | 4 +++- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/richtext/richtextbuffer.cpp b/src/richtext/richtextbuffer.cpp index af6b6a5283..daef8246a9 100644 --- a/src/richtext/richtextbuffer.cpp +++ b/src/richtext/richtextbuffer.cpp @@ -12487,6 +12487,9 @@ bool wxRichTextImage::LoadImageCache(wxDC& dc, wxRichTextDrawingContext& context return true; } + wxRichTextAttr attr(GetAttributes()); + AdjustAttributes(attr, context); + if (!context.GetImagesEnabled()) { if (resetCache || !m_imageCache.IsOk()) @@ -12495,7 +12498,7 @@ bool wxRichTextImage::LoadImageCache(wxDC& dc, wxRichTextDrawingContext& context m_imageCache = bitmap; m_imageState = ImageState_Loaded; } - retImageSize = wxSize(m_imageCache.GetWidth(), m_imageCache.GetHeight()); + retImageSize = wxSize(m_imageCache.GetScaledWidth(), m_imageCache.GetScaledHeight()); return true; } @@ -12513,9 +12516,9 @@ bool wxRichTextImage::LoadImageCache(wxDC& dc, wxRichTextDrawingContext& context { wxBitmap bitmap(image_placeholder24x24_xpm); m_imageCache = bitmap; - m_originalImageSize = wxSize(bitmap.GetWidth(), bitmap.GetHeight()); + m_originalImageSize = wxSize(bitmap.GetScaledWidth(), bitmap.GetScaledHeight()); m_imageState = ImageState_Bad; - retImageSize = wxSize(m_imageCache.GetWidth(), m_imageCache.GetHeight()); + retImageSize = m_originalImageSize; return false; } @@ -12574,18 +12577,18 @@ bool wxRichTextImage::LoadImageCache(wxDC& dc, wxRichTextDrawingContext& context wxTextAttrDimensionConverter converter(dc, buffer ? buffer->GetScale() : 1.0, wxSize(parentWidth, parentHeight)); - if (GetAttributes().GetTextBoxAttr().GetWidth().IsValid() && GetAttributes().GetTextBoxAttr().GetWidth().GetValue() > 0) + if (attr.GetTextBoxAttr().GetWidth().IsValid() && attr.GetTextBoxAttr().GetWidth().GetValue() > 0) { - int widthPixels = converter.GetPixels(GetAttributes().GetTextBoxAttr().GetWidth(), wxHORIZONTAL); + int widthPixels = converter.GetPixels(attr.GetTextBoxAttr().GetWidth(), wxHORIZONTAL); if (widthPixels > 0) width = widthPixels; } // Limit to max width - if (GetAttributes().GetTextBoxAttr().GetMaxSize().GetWidth().IsValid() && GetAttributes().GetTextBoxAttr().GetMaxSize().GetWidth().GetValue() > 0) + if (attr.GetTextBoxAttr().GetMaxSize().GetWidth().IsValid() && attr.GetTextBoxAttr().GetMaxSize().GetWidth().GetValue() > 0) { - int mw = converter.GetPixels(GetAttributes().GetTextBoxAttr().GetMaxSize().GetWidth(), wxHORIZONTAL); + int mw = converter.GetPixels(attr.GetTextBoxAttr().GetMaxSize().GetWidth(), wxHORIZONTAL); // If we already have a smaller max width due to the constraints of the control size, // don't use the larger max width. @@ -12600,9 +12603,9 @@ bool wxRichTextImage::LoadImageCache(wxDC& dc, wxRichTextDrawingContext& context if (width != m_originalImageSize.GetWidth()) height = (int) (float(m_originalImageSize.GetHeight()) * (float(width)/float(m_originalImageSize.GetWidth()))); - if (GetAttributes().GetTextBoxAttr().GetHeight().IsValid() && GetAttributes().GetTextBoxAttr().GetHeight().GetValue() > 0) + if (attr.GetTextBoxAttr().GetHeight().IsValid() && attr.GetTextBoxAttr().GetHeight().GetValue() > 0) { - int heightPixels = converter.GetPixels(GetAttributes().GetTextBoxAttr().GetHeight(), wxVERTICAL); + int heightPixels = converter.GetPixels(attr.GetTextBoxAttr().GetHeight(), wxVERTICAL); if (heightPixels > 0) height = heightPixels; @@ -12613,9 +12616,9 @@ bool wxRichTextImage::LoadImageCache(wxDC& dc, wxRichTextDrawingContext& context // Limit to max height - if (GetAttributes().GetTextBoxAttr().GetMaxSize().GetHeight().IsValid() && GetAttributes().GetTextBoxAttr().GetMaxSize().GetHeight().GetValue() > 0) + if (attr.GetTextBoxAttr().GetMaxSize().GetHeight().IsValid() && attr.GetTextBoxAttr().GetMaxSize().GetHeight().GetValue() > 0) { - int mh = converter.GetPixels(GetAttributes().GetTextBoxAttr().GetMaxSize().GetHeight(), wxVERTICAL); + int mh = converter.GetPixels(attr.GetTextBoxAttr().GetMaxSize().GetHeight(), wxVERTICAL); if (mh > 0) maxHeight = mh; } diff --git a/src/richtext/richtextctrl.cpp b/src/richtext/richtextctrl.cpp index 0534d0945f..5a02b847c3 100644 --- a/src/richtext/richtextctrl.cpp +++ b/src/richtext/richtextctrl.cpp @@ -738,7 +738,9 @@ void wxRichTextCtrl::OnLeftUp(wxMouseEvent& event) } #endif - if ((hit != wxRICHTEXT_HITTEST_NONE) && !(hit & wxRICHTEXT_HITTEST_OUTSIDE)) + // Don't process left click if there was a selection, which implies that a selection may just have been + // extended + if ((hit != wxRICHTEXT_HITTEST_NONE) && !(hit & wxRICHTEXT_HITTEST_OUTSIDE) && !HasSelection()) { wxRichTextEvent cmdEvent( wxEVT_RICHTEXT_LEFT_CLICK,