Merge remote-tracking branch 'cnjinhao/hotfix-1.6.2' into CMake
This commit is contained in:
		
						commit
						80968f3569
					
				| @ -23,9 +23,10 @@ namespace nana | |||||||
| 	class drawing | 	class drawing | ||||||
| 		:private nana::noncopyable | 		:private nana::noncopyable | ||||||
| 	{ | 	{ | ||||||
|  | 		struct draw_fn_handle; | ||||||
| 	public: | 	public: | ||||||
| 		typedef struct{}* diehard_t;                                ///< A handle to a drawing method
 | 		using diehard_t = draw_fn_handle * ;						///< A handle to a drawing method
 | ||||||
| 		typedef std::function<void(paint::graphics&)> draw_fn_t;    ///< A function to draw
 | 		using draw_fn_t = std::function<void(paint::graphics&)>;    ///< A function to draw
 | ||||||
| 
 | 
 | ||||||
| 		drawing(window w);              ///< Create a drawing object for a widget w
 | 		drawing(window w);              ///< Create a drawing object for a widget w
 | ||||||
| 		 | 		 | ||||||
|  | |||||||
| @ -682,7 +682,6 @@ namespace nana{ namespace widgets{	namespace skeletons | |||||||
| 		{ | 		{ | ||||||
| 			return lines_.end(); | 			return lines_.end(); | ||||||
| 		} | 		} | ||||||
| 
 |  | ||||||
| 	private: | 	private: | ||||||
| 		void _m_parse_format(tokenizer & tknizer, std::stack<fblock*> & fbstack) | 		void _m_parse_format(tokenizer & tknizer, std::stack<fblock*> & fbstack) | ||||||
| 		{ | 		{ | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ | |||||||
| #include <stdexcept> | #include <stdexcept> | ||||||
| #include <sstream> | #include <sstream> | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| namespace nana | namespace nana | ||||||
| { | { | ||||||
| 	namespace drawerbase | 	namespace drawerbase | ||||||
| @ -104,12 +105,10 @@ namespace nana | |||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 					font_ = pre_font; | 					font_ = pre_font; | ||||||
| 					fblock_ = nullptr; | 					current_fblock_ = nullptr; | ||||||
| 
 | 
 | ||||||
| 					_m_set_default(pre_font, fgcolor); | 					_m_set_default(pre_font, fgcolor); | ||||||
| 
 | 
 | ||||||
| 					_m_measure(graph); |  | ||||||
| 
 |  | ||||||
| 					render_status rs; | 					render_status rs; | ||||||
| 
 | 
 | ||||||
| 					rs.allowed_width = graph.size().width; | 					rs.allowed_width = graph.size().width; | ||||||
| @ -144,15 +143,10 @@ namespace nana | |||||||
| 					else | 					else | ||||||
| 						rs.pos.y = 0; | 						rs.pos.y = 0; | ||||||
| 
 | 
 | ||||||
| 					auto vsline_iterator = content_lines.begin(); | 					for (auto & line : content_lines) | ||||||
| 					for (auto & line : dstream_) |  | ||||||
| 					{ | 					{ | ||||||
| 						if (rs.pos.y >= static_cast<int>(graph.height())) |  | ||||||
| 							break; |  | ||||||
| 
 |  | ||||||
| 						rs.index = 0; | 						rs.index = 0; | ||||||
| 						rs.vslines.clear(); | 						rs.vslines.swap(line); | ||||||
| 						rs.vslines.swap(*vsline_iterator++); |  | ||||||
| 						rs.pos.x = rs.vslines.front().x_base; | 						rs.pos.x = rs.vslines.front().x_base; | ||||||
| 
 | 
 | ||||||
| 						if (!_m_foreach_visual_line(graph, rs)) | 						if (!_m_foreach_visual_line(graph, rs)) | ||||||
| @ -161,7 +155,12 @@ namespace nana | |||||||
| 						rs.pos.y += static_cast<int>(rs.vslines.back().extent_height_px); | 						rs.pos.y += static_cast<int>(rs.vslines.back().extent_height_px); | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
| 					graph.typeface(pre_font); | 					if (font_ != pre_font) | ||||||
|  | 					{ | ||||||
|  | 						graph.typeface(pre_font); | ||||||
|  | 						font_.release(); | ||||||
|  | 						current_fblock_ = nullptr; | ||||||
|  | 					} | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				bool find(int x, int y, std::wstring& target, std::wstring& url) const noexcept | 				bool find(int x, int y, std::wstring& target, std::wstring& url) const noexcept | ||||||
| @ -183,7 +182,7 @@ namespace nana | |||||||
| 				{ | 				{ | ||||||
| 					::nana::size retsize; | 					::nana::size retsize; | ||||||
| 
 | 
 | ||||||
| 					auto ft = graph.typeface();	//used for restoring the font
 | 					auto pre_font = graph.typeface();	//used for restoring the font
 | ||||||
| 
 | 
 | ||||||
| #ifdef _nana_std_has_string_view | #ifdef _nana_std_has_string_view | ||||||
| 					const unsigned def_line_pixels = graph.text_extent_size(std::wstring_view(L" ", 1)).height; | 					const unsigned def_line_pixels = graph.text_extent_size(std::wstring_view(L" ", 1)).height; | ||||||
| @ -191,11 +190,10 @@ namespace nana | |||||||
| 					const unsigned def_line_pixels = graph.text_extent_size(L" ", 1).height; | 					const unsigned def_line_pixels = graph.text_extent_size(L" ", 1).height; | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 					font_ = ft; | 					font_ = pre_font; | ||||||
| 					fblock_ = nullptr; | 					current_fblock_ = nullptr; | ||||||
| 
 | 
 | ||||||
| 					_m_set_default(ft, colors::black); | 					_m_set_default(pre_font, colors::black); | ||||||
| 					_m_measure(graph); |  | ||||||
| 
 | 
 | ||||||
| 					render_status rs; | 					render_status rs; | ||||||
| 
 | 
 | ||||||
| @ -218,6 +216,12 @@ namespace nana | |||||||
| 							retsize.height += static_cast<unsigned>(vsline.extent_height_px); | 							retsize.height += static_cast<unsigned>(vsline.extent_height_px); | ||||||
| 					} | 					} | ||||||
| 
 | 
 | ||||||
|  | 					if (font_ != pre_font) | ||||||
|  | 					{ | ||||||
|  | 						graph.typeface(pre_font); | ||||||
|  | 						font_.release(); | ||||||
|  | 						current_fblock_ = nullptr; | ||||||
|  | 					} | ||||||
| 					return retsize; | 					return retsize; | ||||||
| 				} | 				} | ||||||
| 			private: | 			private: | ||||||
| @ -294,7 +298,7 @@ namespace nana | |||||||
| 
 | 
 | ||||||
| 				void _m_change_font(graph_reference graph, nana::widgets::skeletons::fblock* fp) | 				void _m_change_font(graph_reference graph, nana::widgets::skeletons::fblock* fp) | ||||||
| 				{ | 				{ | ||||||
| 					if(fp != fblock_) | 					if (fp != current_fblock_) | ||||||
| 					{ | 					{ | ||||||
| 						auto& name = _m_fontname(fp); | 						auto& name = _m_fontname(fp); | ||||||
| 						auto fontsize = _m_font_size(fp); | 						auto fontsize = _m_font_size(fp); | ||||||
| @ -307,26 +311,7 @@ namespace nana | |||||||
| 							font_ = paint::font{ name, fontsize, fs }; | 							font_ = paint::font{ name, fontsize, fs }; | ||||||
| 							graph.typeface(font_); | 							graph.typeface(font_); | ||||||
| 						} | 						} | ||||||
| 						fblock_ = fp; | 						current_fblock_ = fp; | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 
 |  | ||||||
| 				void _m_measure(graph_reference graph) |  | ||||||
| 				{ |  | ||||||
| 					nana::paint::font ft = font_; |  | ||||||
| 					for (auto & line : dstream_) |  | ||||||
| 					{ |  | ||||||
| 						for (auto & value : line) |  | ||||||
| 						{ |  | ||||||
| 							_m_change_font(graph, value.fblock_ptr); |  | ||||||
| 							value.data_ptr->measure(graph); |  | ||||||
| 						} |  | ||||||
| 					} |  | ||||||
| 					if(font_ != ft) |  | ||||||
| 					{ |  | ||||||
| 						font_ = ft; |  | ||||||
| 						graph.typeface(ft); |  | ||||||
| 						fblock_ = nullptr; |  | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| @ -379,7 +364,10 @@ namespace nana | |||||||
| 					for (auto i = line.cbegin(); i != line.cend(); ++i) | 					for (auto i = line.cbegin(); i != line.cend(); ++i) | ||||||
| 					{ | 					{ | ||||||
| 						auto const data = i->data_ptr; | 						auto const data = i->data_ptr; | ||||||
| 						auto fblock = i->fblock_ptr; | 						auto const fblock = i->fblock_ptr; | ||||||
|  | 
 | ||||||
|  | 						_m_change_font(graph, fblock); | ||||||
|  | 						data->measure(graph); | ||||||
| 
 | 
 | ||||||
| 						abs_text_px += data->size().width; | 						abs_text_px += data->size().width; | ||||||
| 
 | 
 | ||||||
| @ -457,9 +445,7 @@ namespace nana | |||||||
| 
 | 
 | ||||||
| 						if (data->is_text()) | 						if (data->is_text()) | ||||||
| 						{ | 						{ | ||||||
| 							_m_change_font(graph, fblock); |  | ||||||
| 							//Split a text into multiple lines
 | 							//Split a text into multiple lines
 | ||||||
| 							auto rest_extent_size = extent_size.width; |  | ||||||
| 							std::size_t text_begin = 0; | 							std::size_t text_begin = 0; | ||||||
| 							while (text_begin < data->text().size()) | 							while (text_begin < data->text().size()) | ||||||
| 							{ | 							{ | ||||||
| @ -643,7 +629,8 @@ namespace nana | |||||||
| 			private: | 			private: | ||||||
| 				dstream dstream_; | 				dstream dstream_; | ||||||
| 				bool format_enabled_ = false; | 				bool format_enabled_ = false; | ||||||
| 				::nana::widgets::skeletons::fblock * fblock_ = nullptr; | 
 | ||||||
|  | 				::nana::widgets::skeletons::fblock * current_fblock_{ nullptr }; | ||||||
| 				::std::deque<traceable> traceable_; | 				::std::deque<traceable> traceable_; | ||||||
| 
 | 
 | ||||||
| 				::nana::paint::font font_; | 				::nana::paint::font font_; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 qPCR4vir
						qPCR4vir