diff --git a/BeefLibs/Beefy2D/src/theme/dark/DarkCheckBox.bf b/BeefLibs/Beefy2D/src/theme/dark/DarkCheckBox.bf index bff67f10..e32d4856 100644 --- a/BeefLibs/Beefy2D/src/theme/dark/DarkCheckBox.bf +++ b/BeefLibs/Beefy2D/src/theme/dark/DarkCheckBox.bf @@ -121,7 +121,8 @@ namespace Beefy.theme.dark { g.SetFont(mFont); - DarkTheme.DrawUnderlined(g, mLabel, GS!(22), GS!(-1)); + using(g.PushColor(DarkTheme.COLOR_TEXT)) + DarkTheme.DrawUnderlined(g, mLabel, GS!(22), GS!(-1)); /*int underlinePos = mLabel.IndexOf('&'); if ((underlinePos != -1) && (underlinePos < mLabel.Length - 1)) diff --git a/BeefLibs/Beefy2D/src/theme/dark/DarkDialog.bf b/BeefLibs/Beefy2D/src/theme/dark/DarkDialog.bf index ade3ea14..9d2a0e84 100644 --- a/BeefLibs/Beefy2D/src/theme/dark/DarkDialog.bf +++ b/BeefLibs/Beefy2D/src/theme/dark/DarkDialog.bf @@ -119,7 +119,8 @@ namespace Beefy.theme.dark g.SetFont(mFont); if (mText != null) - g.DrawString(mText, mTextInsets.mLeft, mTextInsets.mTop, FontAlign.Left, mWidth - mTextInsets.Horz, FontOverflowMode.Wrap); + using (g.PushColor(DarkTheme.COLOR_TEXT)) + g.DrawString(mText, mTextInsets.mLeft, mTextInsets.mTop, FontAlign.Left, mWidth - mTextInsets.Horz, FontOverflowMode.Wrap); } } } diff --git a/BeefLibs/Beefy2D/src/theme/dark/DarkEditWidget.bf b/BeefLibs/Beefy2D/src/theme/dark/DarkEditWidget.bf index b2d32e3e..8c1bd49e 100644 --- a/BeefLibs/Beefy2D/src/theme/dark/DarkEditWidget.bf +++ b/BeefLibs/Beefy2D/src/theme/dark/DarkEditWidget.bf @@ -79,6 +79,8 @@ namespace Beefy.theme.dark mHeight = GS!(24); mHorzJumpSize = GS!(40); mFont = DarkTheme.sDarkTheme?.mSmallFont; + mTextColors[0] = DarkTheme.COLOR_TEXT; + mHiliteColor = DarkTheme.COLOR_TEXT_SELECTED; } protected override EditWidgetContent.Data CreateEditData() diff --git a/BeefLibs/Beefy2D/src/theme/dark/DarkMenu.bf b/BeefLibs/Beefy2D/src/theme/dark/DarkMenu.bf index 434cab94..d0b826eb 100644 --- a/BeefLibs/Beefy2D/src/theme/dark/DarkMenu.bf +++ b/BeefLibs/Beefy2D/src/theme/dark/DarkMenu.bf @@ -32,7 +32,7 @@ namespace Beefy.theme.dark let darkMenuWidget = (DarkMenuWidget)mMenuWidget; g.SetFont(mMenuItem.mBold ? darkMenuWidget.mBoldFont : darkMenuWidget.mFont); - using (g.PushColor(mMenuItem.mDisabled ? 0xFFA8A8A8 : 0xFFFFFFFF)) + using (g.PushColor(mMenuItem.mDisabled ? DarkTheme.COLOR_TEXT_DISABLED : DarkTheme.COLOR_TEXT)) { StringView leftStr = mMenuItem.mLabel; StringView rightStr = default; @@ -43,12 +43,9 @@ namespace Beefy.theme.dark leftStr.RemoveToEnd(barIdx); } - using (g.PushColor(DarkTheme.COLOR_TEXT)) - { - g.DrawString(leftStr, GS!(36), 0); - if (!rightStr.IsEmpty) - g.DrawString(rightStr, mWidth - GS!(8), 0, .Right); - } + g.DrawString(leftStr, GS!(36), 0); + if (!rightStr.IsEmpty) + g.DrawString(rightStr, mWidth - GS!(8), 0, .Right); } if (mMenuItem.mIconImage != null) @@ -57,7 +54,7 @@ namespace Beefy.theme.dark if (mMenuItem.IsParent) { - using (g.PushColor(mMenuItem.mDisabled ? 0xFFA8A8A8 : 0xFFFFFFFF)) + using (g.PushColor(mMenuItem.mDisabled ? DarkTheme.COLOR_TEXT_DISABLED : DarkTheme.COLOR_TEXT)) g.Draw(DarkTheme.sDarkTheme.GetImage(DarkTheme.ImageIdx.RightArrow), mWidth - GS!(16), 0); } } diff --git a/BeefLibs/Beefy2D/src/theme/dark/DarkTheme.bf b/BeefLibs/Beefy2D/src/theme/dark/DarkTheme.bf index 97225b72..fbb339ba 100644 --- a/BeefLibs/Beefy2D/src/theme/dark/DarkTheme.bf +++ b/BeefLibs/Beefy2D/src/theme/dark/DarkTheme.bf @@ -197,6 +197,8 @@ namespace Beefy.theme.dark }; public static uint32 COLOR_TEXT = 0xFFFFFFFF; + public static uint32 COLOR_TEXT_DISABLED = 0xFFA8A8A8; + public static uint32 COLOR_TEXT_SELECTED = 0xFF2f5c88; public static uint32 COLOR_WINDOW = 0xFF595962; public static uint32 COLOR_BKG = 0xFF26262A; public static uint32 COLOR_SELECTED_OUTLINE = 0xFFCFAE11; diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index 28c40b6a..7c5acff3 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -6906,8 +6906,8 @@ namespace IDE var editWidgetContent = (SourceEditWidgetContent)editWidget.Content; //mEditWidget.mVertScrollbar.mScrollIncrement = editWidgetContent.mFont.GetLineSpacing(); - editWidgetContent.mHiliteColor = 0xFF384858; - editWidgetContent.mUnfocusedHiliteColor = 0x80384858; + editWidgetContent.mHiliteColor = mSettings.mUISettings.mColors.mCodeHighlight; + editWidgetContent.mUnfocusedHiliteColor = mSettings.mUISettings.mColors.mCodeHighlightUnfocused; editWidgetContent.mHiliteCurrentLine = mSettings.mEditorSettings.mHiliteCurrentLine; return editWidget; diff --git a/IDE/src/Settings.bf b/IDE/src/Settings.bf index 3d539d98..f3390b00 100644 --- a/IDE/src/Settings.bf +++ b/IDE/src/Settings.bf @@ -311,6 +311,8 @@ namespace IDE public class Colors { public Color mText = 0xFFFFFFFF; + public Color mTextDisabled = 0xFFA8A8A8; + public Color mTextSelected = 0xFF2f5c88; public Color mWindow = 0xFF44444D; public Color mBackground = 0xFF1C1C24; public Color mSelectedOutline = 0xFFCFAE11; @@ -350,6 +352,8 @@ namespace IDE public Color mCurrentLineHilite = 0xFF4C4C54; public Color mCurrentLineNumberHilite = 0x18FFFFFF; public Color mCharPairHilite = 0x1DFFFFFF; + public Color mCodeHilite = 0xFF384858; + public Color mCodeHiliteUnfocused = 0x80384858; public void Deserialize(StructuredData sd) { @@ -362,6 +366,8 @@ namespace IDE } GetColor("Text", ref mText); + GetColor("TextDisabled", ref mTextDisabled); + GetColor("TextSelected", ref mTextSelected); GetColor("Window", ref mWindow); GetColor("Background", ref mBackground); GetColor("SelectedOutline", ref mSelectedOutline); @@ -418,6 +424,8 @@ namespace IDE GetColor("CurrentLineHilite", ref mCurrentLineHilite); GetColor("CurrentLineNumberHilite", ref mCurrentLineNumberHilite); GetColor("CharPairHilite", ref mCharPairHilite); + GetColor("CodeHilite", ref mCodeHilite); + GetColor("CodeHiliteUnfocused", ref mCodeHiliteUnfocused); } public void Apply() @@ -446,6 +454,8 @@ namespace IDE SourceEditWidgetContent.sTextColors[(.)SourceElementType.VisibleWhiteSpace] = mVisibleWhiteSpace; DarkTheme.COLOR_TEXT = mText; + DarkTheme.COLOR_TEXT_DISABLED = mTextDisabled; + DarkTheme.COLOR_TEXT_SELECTED = mTextSelected; DarkTheme.COLOR_WINDOW = mWindow; DarkTheme.COLOR_BKG = mBackground; DarkTheme.COLOR_SELECTED_OUTLINE = mSelectedOutline; diff --git a/IDE/src/ui/AutoComplete.bf b/IDE/src/ui/AutoComplete.bf index 69ea742a..2147183f 100644 --- a/IDE/src/ui/AutoComplete.bf +++ b/IDE/src/ui/AutoComplete.bf @@ -413,6 +413,11 @@ namespace IDE.ui g.PushColor(DarkTheme.COLOR_MENU_FOCUSED); defer:loop g.PopColor(); } + else + { + g.PushColor(DarkTheme.COLOR_TEXT); + defer:loop g.PopColor(); + } let str = StringView(mEntryDisplay, index, @c.NextIndex - index); diff --git a/IDE/src/ui/BinaryDataWidget.bf b/IDE/src/ui/BinaryDataWidget.bf index ee2ded1b..a038232e 100644 --- a/IDE/src/ui/BinaryDataWidget.bf +++ b/IDE/src/ui/BinaryDataWidget.bf @@ -877,7 +877,7 @@ namespace IDE.ui // column header using (g.PushClip(0, 0, mWidth, GS!(mColumnHeaderHeight))) { - using (g.PushColor(0xFFFFFFFF)) + using (g.PushColor(DarkTheme.COLOR_TEXT)) { g.SetFont(mFont); float strViewColumnStart = GS!(mColumnDisplayStart) + mBytesPerDisplayLine*GS!(mColumnDisplayStride) + GS!(mStrViewDisplayStartOffset); @@ -908,7 +908,7 @@ namespace IDE.ui float displayAdj = (float)(-mShowPositionDisplayOffset * lineSpacing); using (g.PushTranslate(0, displayAdj)) { - using (g.PushColor(0xFFFFFFFF)) + using (g.PushColor(DarkTheme.COLOR_TEXT)) { //ulong lineStart = mCurPosition / mBytesPerDisplayLine; int lockSize = lineCount * mBytesPerDisplayLine; diff --git a/IDE/src/ui/BreakpointPanel.bf b/IDE/src/ui/BreakpointPanel.bf index 567a19e6..fcd1c9dc 100644 --- a/IDE/src/ui/BreakpointPanel.bf +++ b/IDE/src/ui/BreakpointPanel.bf @@ -652,17 +652,15 @@ namespace IDE.ui subItem.mOnMouseClick.Add(new => ListViewItemClicked); } var listViewItem = (BreakpointListViewItem)root.GetChildAtIndex(breakIdx); - listViewItem.mTextColor = Color.White; + listViewItem.mTextColor = DarkTheme.COLOR_TEXT; listViewItem.mIsBold = breakpoint.IsActiveBreakpoint(); var locString = scope String(); breakpoint.ToString_Location(locString); listViewItem.Label = locString; - if (breakpoint.IsBound()) - listViewItem.mTextColor = 0xFFFFFFFF; - else - listViewItem.mTextColor = 0x80FFFFFF; + if (!breakpoint.IsBound()) + listViewItem.mTextColor = (0x00FFFFFF & DarkTheme.COLOR_TEXT) | 0x80000000; // Condition var subItem = listViewItem.GetSubItem(2); diff --git a/IDE/src/ui/ConditionDialog.bf b/IDE/src/ui/ConditionDialog.bf index efd13222..db810cfd 100644 --- a/IDE/src/ui/ConditionDialog.bf +++ b/IDE/src/ui/ConditionDialog.bf @@ -369,14 +369,17 @@ namespace IDE.ui { base.Draw(g); - g.DrawString("Breakpoint Condition", mConditionEdit.mX, mConditionEdit.mY - GS!(20)); - g.DrawString("Thread Id", mThreadEdit.mX, mThreadEdit.mY - GS!(20)); - g.DrawString("Log String", mLogEdit.mX, mLogEdit.mY - GS!(20)); - g.DrawString("Break on Hit Count", mHitCountCombo.mX, mHitCountEdit.mY - GS!(19)); + using (g.PushColor(DarkTheme.COLOR_TEXT)) + { + g.DrawString("Breakpoint Condition", mConditionEdit.mX, mConditionEdit.mY - GS!(20)); + g.DrawString("Thread Id", mThreadEdit.mX, mThreadEdit.mY - GS!(20)); + g.DrawString("Log String", mLogEdit.mX, mLogEdit.mY - GS!(20)); + g.DrawString("Break on Hit Count", mHitCountCombo.mX, mHitCountEdit.mY - GS!(19)); - var str = scope String(); - str.AppendF("Current: {0}", mStartingHitCount); - g.DrawString(str, mWidth - GS!(16) - GS!(8), mHitCountEdit.mY - GS!(19), .Right); + var str = scope String(); + str.AppendF("Current: {0}", mStartingHitCount); + g.DrawString(str, mWidth - GS!(16) - GS!(8), mHitCountEdit.mY - GS!(19), .Right); + } } } } diff --git a/IDE/src/ui/DiagnosticsPanel.bf b/IDE/src/ui/DiagnosticsPanel.bf index 664223d0..e26417b8 100644 --- a/IDE/src/ui/DiagnosticsPanel.bf +++ b/IDE/src/ui/DiagnosticsPanel.bf @@ -255,7 +255,8 @@ namespace IDE.ui { using (g.PushClip(0, 0, width, height)) { - using (g.PushColor(0xFF00FF00)) + // Using override to prevent the color turning black when using a dark text color. + using (g.PushColorOverride(0xFF00FF00)) { float prevY = 0; @@ -439,10 +440,13 @@ namespace IDE.ui using (g.PushColor(0x20FFFFFF)) g.FillRect(0, 0, mWidth, mHeight); - DrawData(g, mData, mTimes, dataRect.mX, dataRect.mY, dataRect.mWidth, dataRect.mHeight); + using (g.PushColor(DarkTheme.COLOR_TEXT)) + { + DrawData(g, mData, mTimes, dataRect.mX, dataRect.mY, dataRect.mWidth, dataRect.mHeight); - g.SetFont(DarkTheme.sDarkTheme.mSmallBoldFont); - g.DrawString(mLabel, -GS!(0), -GS!(0), .Centered, dataRect.mX); + g.SetFont(DarkTheme.sDarkTheme.mSmallBoldFont); + g.DrawString(mLabel, -GS!(0), -GS!(0), .Centered, dataRect.mX); + } } } diff --git a/IDE/src/ui/FindAndReplaceDialog.bf b/IDE/src/ui/FindAndReplaceDialog.bf index cea5fff6..a571ed62 100644 --- a/IDE/src/ui/FindAndReplaceDialog.bf +++ b/IDE/src/ui/FindAndReplaceDialog.bf @@ -322,11 +322,14 @@ namespace IDE.ui { base.Draw(g); - g.DrawString("Find what:", 6, mEditWidget.mY - GS!(18)); - if (mReplaceWidget != null) - g.DrawString("Replace with:", GS!(6), mReplaceWidget.mY - GS!(18)); - g.DrawString("Look in:", GS!(6), mLocationCombo.mY - GS!(18)); - g.DrawString("Look at these file types:", GS!(6), mFileTypesCombo.mY - GS!(18)); + using (g.PushColor(DarkTheme.COLOR_TEXT)) + { + g.DrawString("Find what:", 6, mEditWidget.mY - GS!(18)); + if (mReplaceWidget != null) + g.DrawString("Replace with:", GS!(6), mReplaceWidget.mY - GS!(18)); + g.DrawString("Look in:", GS!(6), mLocationCombo.mY - GS!(18)); + g.DrawString("Look at these file types:", GS!(6), mFileTypesCombo.mY - GS!(18)); + } } public override void Update() diff --git a/IDE/src/ui/GenerateDialog.bf b/IDE/src/ui/GenerateDialog.bf index 926edf70..8638b14b 100644 --- a/IDE/src/ui/GenerateDialog.bf +++ b/IDE/src/ui/GenerateDialog.bf @@ -834,9 +834,12 @@ namespace IDE.ui g.DrawString(label, widget.mX + GS!(6), widget.mY - GS!(20)); } - DrawLabel(mKindBar, mRegenerating ? "Regenerating ..." : "Generator"); - for (var uiEntry in mUIEntries) - DrawLabel(uiEntry.mWidget, uiEntry.mLabel); + using (g.PushColor(DarkTheme.COLOR_TEXT)) + { + DrawLabel(mKindBar, mRegenerating ? "Regenerating ..." : "Generator"); + for (var uiEntry in mUIEntries) + DrawLabel(uiEntry.mWidget, uiEntry.mLabel); + } } public override void DrawAll(Graphics g) diff --git a/IDE/src/ui/NewBreakpointDialog.bf b/IDE/src/ui/NewBreakpointDialog.bf index 812bc978..b66d895e 100644 --- a/IDE/src/ui/NewBreakpointDialog.bf +++ b/IDE/src/ui/NewBreakpointDialog.bf @@ -140,7 +140,8 @@ namespace IDE.ui { base.Draw(g); - g.DrawString((mBreakpointKind == .Memory) ? "Breakpoint Address" : "Symbol Name", mAddressEdit.mX, mAddressEdit.mY - GS!(20)); + using (g.PushColor(DarkTheme.COLOR_TEXT)) + g.DrawString((mBreakpointKind == .Memory) ? "Breakpoint Address" : "Symbol Name", mAddressEdit.mX, mAddressEdit.mY - GS!(20)); //g.DrawString("Project Directory", mDialogEditWidget.mX, mDialogEditWidget.mY - 20); } diff --git a/IDE/src/ui/ProfileDialog.bf b/IDE/src/ui/ProfileDialog.bf index e3224155..348fcbc7 100644 --- a/IDE/src/ui/ProfileDialog.bf +++ b/IDE/src/ui/ProfileDialog.bf @@ -95,9 +95,12 @@ namespace IDE.ui { base.Draw(g); - DrawLabel(g, mDescEdit, "Profile Description (Optional)"); - DrawLabel(g, mThreadCombo, "Thread"); - DrawLabel(g, mSampleRateEdit, "Sample Rate"); + using (g.PushColor(DarkTheme.COLOR_TEXT)) + { + DrawLabel(g, mDescEdit, "Profile Description (Optional)"); + DrawLabel(g, mThreadCombo, "Thread"); + DrawLabel(g, mSampleRateEdit, "Sample Rate"); + } } public override void CalcSize() diff --git a/IDE/src/ui/ProfilePanel.bf b/IDE/src/ui/ProfilePanel.bf index 859b395e..58828ca2 100644 --- a/IDE/src/ui/ProfilePanel.bf +++ b/IDE/src/ui/ProfilePanel.bf @@ -684,6 +684,9 @@ namespace IDE.ui { base.Draw(g); + g.PushColor(DarkTheme.COLOR_TEXT); + defer g.PopColor(); + g.SetFont(DarkTheme.sDarkTheme.mSmallFont); g.DrawString("Session", mSessionComboBox.mX - GS!(2), mSessionComboBox.mY, .Right); g.DrawString("Thread", mThreadComboBox.mX - GS!(2), mThreadComboBox.mY, .Right); diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index cfdcd3ae..2b9ea18d 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -4746,7 +4746,8 @@ namespace IDE.ui case 2: lineStr.AppendF("{0}", (lineIdx + 1) % 100); default: lineStr.AppendF("{0}", lineIdx + 1); } - g.DrawString(lineStr, 0, GS!(2) + ewc.mLineCoords[lineIdx], FontAlign.Right, editX - GS!(14)); + using (g.PushColor(DarkTheme.COLOR_TEXT)) + g.DrawString(lineStr, 0, GS!(2) + ewc.mLineCoords[lineIdx], FontAlign.Right, editX - GS!(14)); } } } diff --git a/IDE/src/ui/StartupPanel.bf b/IDE/src/ui/StartupPanel.bf index ca6822c4..adfbfbb2 100644 --- a/IDE/src/ui/StartupPanel.bf +++ b/IDE/src/ui/StartupPanel.bf @@ -92,7 +92,8 @@ namespace IDE.ui } g.SetFont(s_Font); - g.DrawString(mPath, 10, 0, .Left, mWidth - 10); + using (g.PushColor(gApp.mSettings.mUISettings.mColors.mText)) + g.DrawString(mPath, 10, 0, .Left, mWidth - 10); } public override void MouseEnter()