Changeset - r28331:93fc1764c733
[Not reviewed]
master
0 1 0
Loïc Guilloux - 11 months ago 2023-12-25 17:42:13
glx22@users.noreply.github.com
Fix 2d3af14: Don't draw script log over panel borders (#11621)
1 file changed with 17 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/script/script_gui.cpp
Show inline comments
 
@@ -896,14 +896,25 @@ struct ScriptDebugWindow : public Window
 
	{
 
		if (this->filter.script_debug_company == INVALID_COMPANY) return;
 

	
 
		ScriptLogTypes::LogData &log = this->GetLogData();
 
		if (log.empty()) return;
 

	
 
		Rect br = r.Shrink(WidgetDimensions::scaled.bevel);
 
		Rect tr = r.Shrink(WidgetDimensions::scaled.framerect);
 
		Rect fr = r.Shrink(WidgetDimensions::scaled.framerect);
 

	
 
		/* Setup a clipping rectangle... */
 
		DrawPixelInfo tmp_dpi;
 
		if (!FillDrawPixelInfo(&tmp_dpi, fr)) return;
 
		/* ...but keep coordinates relative to the window. */
 
		tmp_dpi.left += fr.left;
 
		tmp_dpi.top += fr.top;
 

	
 
		AutoRestoreBackup dpi_backup(_cur_dpi, &tmp_dpi);
 

	
 
		fr.left -= this->hscroll->GetPosition();
 

	
 
		for (int i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && (size_t)i < log.size(); i++) {
 
			const ScriptLogTypes::LogLine &line = log[i];
 

	
 
			TextColour colour;
 
			switch (line.type) {
 
				case ScriptLogTypes::LOG_SQ_INFO:  colour = TC_BLACK;  break;
 
@@ -913,18 +924,19 @@ struct ScriptDebugWindow : public Window
 
				case ScriptLogTypes::LOG_ERROR:    colour = TC_RED;    break;
 
				default:                           colour = TC_BLACK;  break;
 
			}
 

	
 
			/* Check if the current line should be highlighted */
 
			if (i == this->highlight_row) {
 
				GfxFillRect(br.left, tr.top, br.right, tr.top + this->resize.step_height - 1, PC_BLACK);
 
				fr.bottom = fr.top + this->resize.step_height - 1;
 
				GfxFillRect(fr, PC_BLACK);
 
				if (colour == TC_BLACK) colour = TC_WHITE; // Make black text readable by inverting it to white.
 
			}
 

	
 
			DrawString(-this->hscroll->GetPosition(), tr.right, tr.top, line.text, colour, SA_LEFT | SA_FORCE);
 
			tr.top += this->resize.step_height;
 
			DrawString(fr, line.text, colour, SA_LEFT | SA_FORCE);
 
			fr.top += this->resize.step_height;
 
		}
 
	}
 

	
 
	/**
 
	 * Update the scrollbar and scroll position of the log panel.
 
	 */
0 comments (0 inline, 0 general)