Przeglądaj źródła

Tabs are always TThemeTabSheet

Source commit: 343c78be5991018fe04068b6c61daaa3f4329081
Martin Prikryl 4 lat temu
rodzic
commit
1c885eb601

+ 18 - 2
source/components/ThemePageControl.cpp

@@ -25,8 +25,8 @@ namespace Themepagecontrol
 {
   void __fastcall PACKAGE Register()
   {
-    TComponentClass classes[1] = {__classid(TThemePageControl)};
-    RegisterComponents(L"Scp", classes, 0);
+    TComponentClass classes[2] = {__classid(TThemePageControl), __classid(TThemeTabSheet)};
+    RegisterComponents(L"Scp", classes, 1);
   }
 }
 //----------------------------------------------------------------------------------------------------------
@@ -574,6 +574,22 @@ void __fastcall TThemePageControl::Dispatch(void * Message)
   }
 }
 //----------------------------------------------------------------------------------------------------------
+TThemeTabSheet * TThemePageControl::GetPage(int Index)
+{
+  return DebugNotNull(dynamic_cast<TThemeTabSheet *>(TPageControl::Pages[Index]));
+}
+//----------------------------------------------------------------------------------------------------------
+TThemeTabSheet * TThemePageControl::GetActivePage()
+{
+  TTabSheet * TabSheet = TPageControl::ActivePage;
+  TThemeTabSheet * Result = NULL;
+  if (TabSheet != NULL)
+  {
+    Result = DebugNotNull(dynamic_cast<TThemeTabSheet *>(TabSheet));
+  }
+  return Result;
+}
+//----------------------------------------------------------------------------------------------------------
 #ifdef _DEBUG
 void __fastcall TThemePageControl::RequestAlign()
 {

+ 5 - 0
source/components/ThemePageControl.h

@@ -35,6 +35,9 @@ __published:
 public:
   __fastcall TThemePageControl(TComponent * Owner);
 
+  __property TThemeTabSheet * Pages[int Index] = { read = GetPage };
+  __property TThemeTabSheet * ActivePage = { read = GetActivePage };
+
   int __fastcall GetTabsHeight();
   UnicodeString __fastcall FormatCaptionWithTabButton(const UnicodeString & Caption);
   TRect __fastcall TabButtonRect(int Index);
@@ -68,6 +71,8 @@ private:
   void DrawDropDown(HDC DC, int Radius, int X, int Y, COLORREF Color, int Grow);
   void __fastcall WMLButtonDown(TWMLButtonDown & Message);
   bool IsHotButton(int Index);
+  TThemeTabSheet * GetPage(int Index);
+  TThemeTabSheet * GetActivePage();
 
   int FOldTabIndex;
   int FHotTabButton;

+ 9 - 18
source/forms/CustomScpExplorer.cpp

@@ -6825,10 +6825,7 @@ void __fastcall TCustomScpExplorerForm::SessionListChanged()
   SendMessage(SessionsPageControl->Handle, WM_SETREDRAW, 0, 0);
   try
   {
-    while ((SessionsPageControl->PageCount > SessionList->Count + 1) ||
-           // Clear the design time unthemed tab
-           ((SessionsPageControl->PageCount > 0) &&
-            (dynamic_cast<TThemeTabSheet *>(SessionsPageControl->Pages[SessionsPageControl->PageCount - 1]) == NULL)))
+    while (SessionsPageControl->PageCount > Manager->Count + 1)
     {
       delete SessionsPageControl->Pages[SessionsPageControl->PageCount - 1];
     }
@@ -6843,7 +6840,7 @@ void __fastcall TCustomScpExplorerForm::SessionListChanged()
       }
       else
       {
-        TabSheet = DebugNotNull(dynamic_cast<TThemeTabSheet *>(SessionsPageControl->Pages[Index]));
+        TabSheet = SessionsPageControl->Pages[Index];
       }
 
       bool IsSessionTab = (Index < SessionList->Count);
@@ -6874,16 +6871,14 @@ void __fastcall TCustomScpExplorerForm::SessionListChanged()
 //---------------------------------------------------------------------------
 void __fastcall TCustomScpExplorerForm::UpdateNewTabTab()
 {
-  TTabSheet * TabSheet = SessionsPageControl->Pages[SessionsPageControl->PageCount - 1];
+  TThemeTabSheet * TabSheet = SessionsPageControl->Pages[SessionsPageControl->PageCount - 1];
 
   UnicodeString TabCaption;
   if (WinConfiguration->SelectiveToolbarText)
   {
     TabCaption = StripHotkey(StripTrailingPunctuation(NonVisualDataModule->NewTabAction->Caption));
   }
-  TThemeTabSheet * ThemeTabSheet = dynamic_cast<TThemeTabSheet *>(TabSheet);
-  // When starting, we can get here with the design-time unthemed tab
-  if ((ThemeTabSheet != NULL) && (ThemeTabSheet->Button != ttbNone))
+  if (TabSheet->Button != ttbNone)
   {
     TabCaption = SessionsPageControl->FormatCaptionWithTabButton(TabCaption);
   }
@@ -6903,7 +6898,7 @@ UnicodeString TCustomScpExplorerForm::GetLocalBrowserSessionTitle(TManagedTermin
   return UnicodeString();
 }
 //---------------------------------------------------------------------------
-void __fastcall TCustomScpExplorerForm::UpdateSessionTab(TTabSheet * TabSheet)
+void TCustomScpExplorerForm::UpdateSessionTab(TThemeTabSheet * TabSheet)
 {
   if (DebugAlwaysTrue(TabSheet != NULL))
   {
@@ -6923,15 +6918,11 @@ void __fastcall TCustomScpExplorerForm::UpdateSessionTab(TTabSheet * TabSheet)
       TTerminalManager * Manager = TTerminalManager::Instance();
       UnicodeString TabCaption = Manager->GetSessionTitle(ASession, true);
 
-      TThemeTabSheet * ThemeTabSheet = dynamic_cast<TThemeTabSheet *>(TabSheet);
-      if (DebugAlwaysTrue(ThemeTabSheet != NULL))
+      TabSheet->Shadowed = !ASession->Active && !ASession->LocalBrowser;
+      TabSheet->Button = CanCloseSession(ASession) ? ttbClose : ttbNone;
+      if (TabSheet->Button != ttbNone)
       {
-        ThemeTabSheet->Shadowed = !ASession->Active && !ASession->LocalBrowser;
-        ThemeTabSheet->Button = CanCloseSession(ASession) ? ttbClose : ttbNone;
-        if (ThemeTabSheet->Button != ttbNone)
-        {
-          TabCaption = SessionsPageControl->FormatCaptionWithTabButton(TabCaption);
-        }
+        TabCaption = SessionsPageControl->FormatCaptionWithTabButton(TabCaption);
       }
 
       TabSheet->Caption = TabCaption;

+ 1 - 1
source/forms/CustomScpExplorer.dfm

@@ -391,7 +391,7 @@ object CustomScpExplorerForm: TCustomScpExplorerForm
     OnDragOver = SessionsPageControlDragOver
     OnMouseDown = SessionsPageControlMouseDown
     OnTabButtonClick = SessionsPageControlTabButtonClick
-    object TabSheet1: TTabSheet
+    object TabSheet1: TThemeTabSheet
       Caption = 'TabSheet1'
     end
   end

+ 2 - 2
source/forms/CustomScpExplorer.h

@@ -97,7 +97,7 @@ __published:
   TTBXItem *TBXItem211;
   TTBXItem *TBXItem225;
   TTBXItem *TBXItem226;
-  TTabSheet *TabSheet1;
+  TThemeTabSheet *TabSheet1;
   TThemePageControl *SessionsPageControl;
   TPathLabel *QueueLabel;
   TTBXSeparatorItem *TBXSeparatorItem57;
@@ -626,7 +626,7 @@ protected:
     bool OnFocused, bool NoConfirmation = false, void * Param = NULL);
   void __fastcall UpdateCopyParamCounters(const TCopyParamType & CopyParam);
   int __fastcall AddSessionColor(TColor Color);
-  void __fastcall UpdateSessionTab(TTabSheet * TabSheet);
+  void UpdateSessionTab(TThemeTabSheet * TabSheet);
   void __fastcall UpdateNewTabTab();
   void __fastcall AddFixedSessionImages();
   int __fastcall AddFixedSessionImage(int GlyphsSourceIndex);