OpenClonk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
C4GameOptionsList Class Reference

#include <C4GameOptions.h>

Inheritance diagram for C4GameOptionsList:
[legend]
Collaboration diagram for C4GameOptionsList:
[legend]

Public Types

enum  { IconLabelSpacing = 2 }
 
enum  C4GameOptionsListSource { GOLS_PreGameSingle, GOLS_PreGameNetwork, GOLS_Lobby, GOLS_Runtime }
 
typedef int32_t(* SortFunction )(const Element *pEl1, const Element *pEl2, void *par)
 

Public Member Functions

 C4GameOptionsList (const C4Rect &rcBounds, bool fActive, C4GameOptionsListSource source, class C4ScenarioParameterDefs *param_defs=nullptr, class C4ScenarioParameters *params=nullptr)
 
 ~C4GameOptionsList () override
 
void Update ()
 
void OnSec1Timer () override
 
void SetParameters (C4ScenarioParameterDefs *param_defs, C4ScenarioParameters *params)
 
void Activate ()
 
void Deactivate ()
 
bool IsRuntime () const
 
bool IsTabular () const
 
bool IsPreGame () const
 
bool IsPreGameSingle () const
 
C4ScenarioParametersGetParameters ()
 
void MouseInput (CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
 
void RemoveElement (Element *pChild) override
 
bool AddElement (Element *pChild, int32_t iIndent=0)
 
void AddElement (Element *pChild)
 
bool InsertElement (Element *pChild, Element *pInsertBefore, int32_t iIndent=0)
 
void InsertElement (Element *pChild, Element *pInsertBefore)
 
void ElementSizeChanged (Element *pOfElement) override
 
void ElementPosChanged (Element *pOfElement) override
 
int32_t GetItemWidth ()
 
void SelectionChanged (bool fByUser)
 
void SetSelectionChangeCallbackFn (BaseCallbackHandler *pToHandler)
 
void SetSelectionDblClickFn (BaseCallbackHandler *pToHandler)
 
void ScrollToBottom ()
 
void ScrollItemInView (Element *pItem)
 
void FreezeScrolling ()
 
void UnFreezeScrolling ()
 
void SetDecoration (bool fDrawBG, ScrollBarFacets *pToGfx, bool fAutoScroll, bool fDrawBorder=false)
 
void SetSelectionDiabled (bool fToVal=true)
 
ElementGetFirst ()
 
ElementGetLast ()
 
int32_t GetMarginTop () override
 
int32_t GetMarginLeft () override
 
int32_t GetMarginRight () override
 
int32_t GetMarginBottom () override
 
ElementGetSelectedItem ()
 
bool IsScrollingActive ()
 
bool IsScrollingNecessary ()
 
void SelectEntry (Element *pNewSel, bool fByUser)
 
void SelectFirstEntry (bool fByUser)
 
void SelectNone (bool fByUser)
 
bool IsMultiColumn () const
 
int32_t ContractToElementHeight ()
 
void UpdateElementPositions ()
 
void UpdateElementPosition (Element *pOfElement, int32_t iIndent)
 
void UpdateSize () override
 
bool IsSelectedChild (Element *pChild) override
 
void SortElements (SortFunction SortFunc, void *par)
 
bool HasFocus ()
 
bool HasDrawFocus ()
 
void SetPos (int32_t iXPos, int32_t iYPos)
 
void UpdateOwnPos () override
 
C4RectGetClientRect () override
 
void ApplyElementOffset (int32_t &riX, int32_t &riY) override
 
void ApplyInvElementOffset (int32_t &riX, int32_t &riY) override
 
virtual bool IsComponentOutsideClientArea ()
 
void Clear ()
 
void ClearChildren ()
 
void MakeLastElement (Element *pChild)
 
void ReaddElement (Element *pChild)
 
ElementGetNextNestedElement (Element *pPrevElement, bool fBackwards)
 
ElementGetFirstContained () override
 
virtual ElementGetLastContained ()
 
ElementGetFirstNestedElement (bool fBackwards) override
 
Iterator begin ()
 
Iterator end ()
 
ReverseIterator rbegin ()
 
ReverseIterator rend ()
 
ContainerGetContainer () override
 
ElementGetElementByIndex (int32_t i)
 
int32_t GetElementCount ()
 
void SetVisibility (bool fToValue) override
 
bool IsParentOf (Element *pEl) override
 
virtual void MouseEnter (CMouse &rMouse)
 
virtual void MouseLeave (CMouse &rMouse)
 
virtual void StartDragging (CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
 
virtual void DoDragging (CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
 
virtual void StopDragging (CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
 
bool DoContext ()
 
ContainerGetParent ()
 
virtual class DialogGetDlg ()
 
virtual Screen * GetScreen ()
 
void ScreenPos2ClientPos (int32_t &riX, int32_t &riY)
 
void ClientPos2ScreenPos (int32_t &riX, int32_t &riY)
 
void SetToolTip (const char *szNewTooltip, bool is_immediate=false)
 
const char * GetToolTip ()
 
const char * GetOwnToolTip ()
 
bool IsImmediateToolTip () const
 
int32_t GetWidth ()
 
int32_t GetHeight ()
 
C4RectGetBounds ()
 
void SetBounds (const C4Rect &rcNewBound)
 
C4Rect GetContainedClientRect ()
 
ElementGetNext () const
 
ElementGetPrev () const
 
bool IsInActiveDlg (bool fForKeyboard)
 
C4Rect GetToprightCornerRect (int32_t iWidth=16, int32_t iHeight=16, int32_t iHIndent=4, int32_t iVIndent=4, int32_t iIndexX=0)
 
bool IsVisible ()
 
virtual int32_t GetListItemTopSpacing ()
 
virtual bool GetListItemTopSpacingBar ()
 
void SetDragTarget (Window *pToWindow)
 
void SetContextHandler (ContextHandler *pNewHd)
 
virtual ContextHandler * GetContextHandler ()
 

Public Attributes

bool fVisible {true}
 

Protected Member Functions

void DrawElement (C4TargetFacet &cgo) override
 
bool IsFocused (Control *pCtrl) override
 
bool IsFocusOnClick () override
 
ControlIsFocusElement () override
 
void OnGetFocus (bool fByMouse) override
 
bool CharIn (const char *c) override
 
void AfterElementRemoval () override
 
void UpdateColumnCount ()
 
void DisableFocus ()
 
virtual void OnLooseFocus ()
 
void Draw (C4TargetFacet &cgo) override
 
bool OnHotkey (uint32_t cHotkey) override
 
virtual void UpdatePos ()
 
void Draw3DFrame (C4TargetFacet &cgo, bool fUp=false, int32_t iIndent=1, BYTE byAlpha=C4GUI_BorderAlpha, bool fDrawTop=true, int32_t iTopOff=0, bool fDrawLeft=true, int32_t iLeftOff=0)
 
void DrawBar (C4TargetFacet &cgo, DynBarFacet &rFacets)
 
void DrawVBar (C4TargetFacet &cgo, DynBarFacet &rFacets)
 
void DrawHBarByVGfx (C4TargetFacet &cgo, DynBarFacet &rFacets)
 
void DrawHVBar (C4TargetFacet &cgo, DynBarFacet &rFacets, C4DrawTransform &trf, int32_t iMiddleLength)
 
virtual bool IsOwnPtrElement ()
 
virtual bool IsExternalDrawDialog ()
 
virtual bool IsMenu ()
 
virtual class DialogWindow * GetDialogWindow ()
 
virtual bool CheckNameHotkey (const char *)
 

Protected Attributes

int32_t iMultiColItemWidth
 
int32_t iColCount
 
ScrollWindowpClientWindow
 
ElementpSelectedItem
 
BaseCallbackHandler * pSelectionChangeHandler
 
BaseCallbackHandler * pSelectionDblClickHandler
 
bool fDrawBackground
 
bool fDrawBorder
 
bool fSelectionDisabled
 
C4Rect rcClientRect
 
ElementpFirst
 
ElementpLast
 
ContainerpParent {nullptr}
 
ElementpPrev
 
ElementpNext
 
WindowpDragTarget {nullptr}
 
int32_t iDragX
 
int32_t iDragY
 
bool fDragging {false}
 
ContextHandler * pContextHandler {nullptr}
 
C4Rect rcBounds
 

Private Member Functions

bool Execute (int, pollfd *) override
 
void Set ()
 
void SetDelay (uint32_t inDelay)
 
bool CheckAndReset ()
 
C4TimeMilliseconds GetNextTick (C4TimeMilliseconds tNow) override
 
uint32_t TimerInterval () override
 
void Changed ()
 
bool ExecuteUntil (int iTimeout=-1)
 
virtual void GetFDs (std::vector< struct pollfd > &)
 
bool IsSignaled ()
 
virtual bool IsLowPriority ()
 
virtual bool IsNotify ()
 

Detailed Description

Definition at line 25 of file C4GameOptions.h.

Member Typedef Documentation

typedef int32_t(* C4GUI::ListBox::SortFunction)(const Element *pEl1, const Element *pEl2, void *par)
inherited

Definition at line 1595 of file C4Gui.h.

Member Enumeration Documentation

anonymous enum
Enumerator
IconLabelSpacing 

Definition at line 28 of file C4GameOptions.h.

28 { IconLabelSpacing = 2 }; // space between an icon and its text

Constructor & Destructor Documentation

C4GameOptionsList::C4GameOptionsList ( const C4Rect rcBounds,
bool  fActive,
C4GameOptionsListSource  source,
class C4ScenarioParameterDefs param_defs = nullptr,
class C4ScenarioParameters params = nullptr 
)

Definition at line 316 of file C4GameOptions.cpp.

References Activate(), Game, IsPreGame(), C4Game::Parameters, C4Game::ScenarioParameterDefs, and C4GameParameters::ScenarioParameters.

317  : C4GUI::ListBox(rcBounds), source(source), param_defs(param_defs), params(params)
318 {
319  // default parameter defs
320  if (!IsPreGame())
321  {
322  if (!this->param_defs) this->param_defs = &::Game.ScenarioParameterDefs;
323  if (!this->params) this->params = &::Game.Parameters.ScenarioParameters;
324  }
325  // initial option fill
326  InitOptions();
327  if (fActive) Activate();
328 }
bool IsPreGame() const
C4Game Game
Definition: C4Globals.cpp:52
class C4ScenarioParameterDefs & ScenarioParameterDefs
Definition: C4Game.h:75
C4GameParameters & Parameters
Definition: C4Game.h:67
C4ScenarioParameters ScenarioParameters

Here is the call graph for this function:

C4GameOptionsList::~C4GameOptionsList ( )
inlineoverride

Definition at line 166 of file C4GameOptions.h.

References Deactivate().

166 { Deactivate(); }

Here is the call graph for this function:

Member Function Documentation

void C4GameOptionsList::Activate ( )

Definition at line 367 of file C4GameOptions.cpp.

References StdScheduler::Add(), Application, and Update().

Referenced by C4GameOptionsList(), and C4GameLobby::MainDlg::UpdateRightTab().

368 {
369  // register timer if necessary
370  Application.Add(this);
371  // force an update
372  Update();
373 }
void Add(StdSchedulerProc *pProc)
C4Application Application
Definition: C4Globals.cpp:44

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Container::AddElement ( Element pChild)
inherited

Definition at line 118 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, C4GUI::Container::pLast, C4GUI::Element::pNext, C4GUI::Element::pParent, C4GUI::Element::pPrev, and C4GUI::Container::RemoveElement().

Referenced by C4GUI::Tabular::AddCustomSheet(), C4GUI::ListBox::AddElement(), C4ChartDialog::C4ChartDialog(), C4ChatControl::C4ChatControl(), C4ChatDlg::C4ChatDlg(), C4DownloadDlg::C4DownloadDlg(), C4GameOptionButtons::C4GameOptionButtons(), C4GameOverDlg::C4GameOverDlg(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4Menu::C4Menu(), C4Network2ClientListDlg::C4Network2ClientListDlg(), C4Network2StartWaitDlg::C4Network2StartWaitDlg(), C4StartupAboutDlg::C4StartupAboutDlg(), C4StartupMainDlg::C4StartupMainDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupNetListEntry::C4StartupNetListEntry(), C4StartupOptionsDlg::C4StartupOptionsDlg(), C4StartupPlrColorPickerDlg::C4StartupPlrColorPickerDlg(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::ContextButton::ContextButton(), C4MapFolderData::CreateGUIElements(), C4GUI::InfoDialog::CreateSubComponents(), C4FileSelDlg::DefaultListItem::DefaultListItem(), C4GUI::FullscreenDialog::FullscreenDialog(), C4FileSelDlg::InitElements(), C4GUI::InputDialog::InputDialog(), C4GUI::Container::InsertElement(), C4GUI::LabeledEdit::LabeledEdit(), C4GameLobby::MainDlg::MainDlg(), C4GUI::MessageDialog::MessageDialog(), C4ChatControl::ChatSheet::NickItem::NickItem(), C4GUI::ProgressDialog::ProgressDialog(), C4GameLobby::ScenDesc::ScenDesc(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::ScrollWindow::ScrollWindow(), C4GUI::InputDialog::SetCustomEdit(), C4GoalDisplay::SetGoals(), C4GUI::Dialog::SetTitle(), C4GUI::FullscreenDialog::SetTitle(), and C4GUI::TextWindow::TextWindow().

119  {
120  // safety
121  if (!pChild) return;
122  // remove from any previous container
123  if (pChild->pParent) pChild->pParent->RemoveElement(pChild);
124  // add to end of list
125  if (pLast) pLast->pNext = pChild; else pFirst = pChild;
126  pChild->pPrev = pLast; pChild->pNext = nullptr; pLast = pChild;
127  pChild->pParent = this;
128 
129  assert(pChild->pNext != pChild);
130  assert(pChild->pPrev != pChild);
131  assert(pChild->pParent != pChild);
132  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Element * pPrev
Definition: C4Gui.h:377
Container * pParent
Definition: C4Gui.h:376
Element * pNext
Definition: C4Gui.h:377

Here is the call graph for this function:

Here is the caller graph for this function:

bool C4GUI::ListBox::AddElement ( Element pChild,
int32_t  iIndent = 0 
)
inherited

Definition at line 488 of file C4GuiListBox.cpp.

References C4GUI::Container::AddElement(), C4GUI::Element::GetBounds(), C4GUI::ListBox::GetItemWidth(), C4GUI::Element::GetListItemTopSpacing(), C4GUI::Element::GetPrev(), C4Rect::Hgt, C4GUI::ListBox::iColCount, C4GUI::ListBox::iMultiColItemWidth, C4GUI::ListBox::pClientWindow, C4GUI::ScrollWindow::SetClientHeight(), C4GUI::Element::UpdateOwnPos(), C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4GameLobby::MainDlg::MainDlg().

489  {
490  // fail if no client window is present
491  if (!pClientWindow) return false;
492  // add to scroll window
493  pClientWindow->AddElement(pChild);
494  // resize to horizontal list extents
495  C4Rect &rcChildBounds = pChild->GetBounds();
496  rcChildBounds.x = iIndent;
497  rcChildBounds.Wdt = GetItemWidth() - iIndent ;
498  // reposition to end of list
499  if (pChild->GetPrev())
500  {
501  if (iMultiColItemWidth)
502  {
503  rcChildBounds.y = pChild->GetPrev()->GetBounds().y;
504  int32_t col = pChild->GetPrev()->GetBounds().x / iMultiColItemWidth + 1;
505  if (col >= iColCount)
506  {
507  col = 0;
508  int32_t cnt = iColCount;
509  int32_t iPrevLineHgt = 0;
510  Element *pPrevChild = pChild->GetPrev();
511  while (cnt-- && pPrevChild)
512  {
513  iPrevLineHgt = std::max<int32_t>(iPrevLineHgt, pPrevChild->GetBounds().Hgt);
514  pPrevChild = pPrevChild->GetPrev();
515  }
516  rcChildBounds.y += iPrevLineHgt;
517  }
518  rcChildBounds.x = col * iMultiColItemWidth;
519  }
520  else
521  {
522  rcChildBounds.y = pChild->GetPrev()->GetBounds().y + pChild->GetPrev()->GetBounds().Hgt + pChild->GetListItemTopSpacing();
523  }
524  }
525  else
526  rcChildBounds.y = 0;
527  pChild->UpdateOwnPos();
528  // update scrolling
529  pClientWindow->SetClientHeight(rcChildBounds.y+rcChildBounds.Hgt);
530  // success
531  return true;
532  }
Definition: C4Rect.h:27
void AddElement(Element *pChild)
int32_t iMultiColItemWidth
Definition: C4Gui.h:1507
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
int32_t x
Definition: C4Rect.h:30
int32_t iColCount
Definition: C4Gui.h:1508
int32_t GetItemWidth()
Definition: C4Gui.h:1545
void SetClientHeight(int32_t iToHgt)
Definition: C4Gui.h:973
int32_t Hgt
Definition: C4Rect.h:30
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::AfterElementRemoval ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Container.

Definition at line 1528 of file C4Gui.h.

References C4GUI::Container::AfterElementRemoval(), and C4GUI::ListBox::UpdateElementPositions().

1529  { Container::AfterElementRemoval(); UpdateElementPositions(); } // called by ScrollWindow to parent after an element has been removed
void UpdateElementPositions()
virtual void AfterElementRemoval()
Definition: C4Gui.h:756

Here is the call graph for this function:

void C4GUI::Window::ApplyElementOffset ( int32_t &  riX,
int32_t &  riY 
)
inlineoverridevirtualinherited

Reimplemented from C4GUI::Container.

Reimplemented in C4GUI::Dialog.

Definition at line 866 of file C4Gui.h.

References C4Rect::x, and C4Rect::y.

Referenced by C4GUI::Dialog::ApplyElementOffset().

867  { riX -= rcClientRect.x; riY -= rcClientRect.y; }
C4Rect rcClientRect
Definition: C4Gui.h:851
int32_t y
Definition: C4Rect.h:30
int32_t x
Definition: C4Rect.h:30

Here is the caller graph for this function:

void C4GUI::Window::ApplyInvElementOffset ( int32_t &  riX,
int32_t &  riY 
)
inlineoverridevirtualinherited

Reimplemented from C4GUI::Container.

Reimplemented in C4GUI::Dialog.

Definition at line 868 of file C4Gui.h.

References C4Rect::x, and C4Rect::y.

Referenced by C4GUI::Dialog::ApplyInvElementOffset().

869  { riX += rcClientRect.x; riY += rcClientRect.y; }
C4Rect rcClientRect
Definition: C4Gui.h:851
int32_t y
Definition: C4Rect.h:30
int32_t x
Definition: C4Rect.h:30

Here is the caller graph for this function:

Iterator C4GUI::Container::begin ( )
inlineinherited

Definition at line 824 of file C4Gui.h.

Referenced by C4ScriptGuiWindow::ClearPointers().

824 { return Iterator(pFirst); }
Element * pFirst
Definition: C4Gui.h:750

Here is the caller graph for this function:

bool C4GUI::ListBox::CharIn ( const char *  c)
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Control.

Definition at line 598 of file C4GuiListBox.cpp.

References C4GUI::Control::CharIn(), C4GUI::Element::CheckNameHotkey(), C4GUI::ListBox::GetFirst(), C4GUI::Element::GetNext(), C4GUI::ListBox::GetSelectedItem(), and C4GUI::ListBox::SelectEntry().

599  {
600  // Jump to first/next entry beginning with typed letter
601  Element *pSel = GetSelectedItem();
602  Element *pStartCheck = pSel;
603  if (pSel) pSel = pSel->GetNext();
604  if (!pSel)
605  {
606  pSel = GetFirst();
607  if (!pSel) return false;
608  }
609  while (pSel != pStartCheck && !pSel->CheckNameHotkey(c))
610  if (!(pSel = pSel->GetNext()))
611  if (pStartCheck)
612  // list end reached while another entry had been selected before: Re-check start of list
613  pSel = GetFirst();
614  // ok, change selection - might do nothing if list was cycled, which is OK
615  if (pSel)
616  {
617  SelectEntry(pSel, true);
618  return true;
619  }
620  return Control::CharIn(c);
621  }
Element * GetFirst()
Definition: C4Gui.h:1571
Element * GetSelectedItem()
Definition: C4Gui.h:1580
virtual bool CharIn(const char *)
Definition: C4Gui.h:1051
void SelectEntry(Element *pNewSel, bool fByUser)

Here is the call graph for this function:

virtual bool C4GUI::Element::CheckNameHotkey ( const char *  )
inlineprotectedvirtualinherited

Reimplemented in C4StartupScenSelDlg::ScenListItem.

Definition at line 407 of file C4Gui.h.

Referenced by C4GUI::ListBox::CharIn().

407 { return false; }

Here is the caller graph for this function:

void C4GUI::Container::Clear ( )
inherited

Definition at line 63 of file C4GuiContainers.cpp.

References C4GUI::Container::ClearChildren().

Referenced by C4GUI::Screen::Clear(), C4GUI::ComboBox_FillCB::ClearEntries(), C4StartupNetListEntry::ClearRef(), C4GUI::Container::~Container(), and C4GUI::ContextMenu::~ContextMenu().

64  {
65  ClearChildren();
66  }

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Container::ClearChildren ( )
inherited

Definition at line 68 of file C4GuiContainers.cpp.

References C4GUI::Element::IsOwnPtrElement(), C4GUI::Container::pFirst, C4GUI::Container::pLast, C4GUI::Element::pNext, C4GUI::Element::pParent, and C4GUI::Element::pPrev.

Referenced by C4GUI::Container::Clear(), C4ScriptGuiWindow::Close(), C4ScriptGuiWindow::RemoveChild(), C4GoalDisplay::SetGoals(), and C4ScriptGuiWindow::~C4ScriptGuiWindow().

69  {
70  // delete all items; dtor will update list
71  while (pFirst)
72  {
73  if (pFirst->IsOwnPtrElement())
74  {
75  // unlink from list
76  Element *pANext = pFirst->pNext;
77  pFirst->pPrev = pFirst->pNext = nullptr;
78  pFirst->pParent = nullptr;
79  if ((pFirst = pANext))
80  pFirst->pPrev = nullptr;
81  else
82  pLast = nullptr;
83  }
84  else
85  delete pFirst;
86  }
87  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Element * pPrev
Definition: C4Gui.h:377
Container * pParent
Definition: C4Gui.h:376
virtual bool IsOwnPtrElement()
Definition: C4Gui.h:401
Element * pNext
Definition: C4Gui.h:377

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::ClientPos2ScreenPos ( int32_t &  riX,
int32_t &  riY 
)
inherited

Definition at line 231 of file C4Gui.cpp.

References C4GUI::Container::ApplyInvElementOffset(), C4GUI::Element::GetParent(), C4GUI::Element::pParent, C4GUI::Element::rcBounds, C4Rect::x, and C4Rect::y.

Referenced by C4MapFolderData::CreateGUIElements(), C4GUI::Screen::DoContext(), and C4Menu::Draw().

232  {
233  // apply all parent offsets
234  Container *pCont = pParent;
235  while (pCont)
236  {
237  pCont->ApplyInvElementOffset(riX, riY);
238  pCont = pCont->GetParent();
239  }
240  // apply own offset
241  riX += rcBounds.x; riY += rcBounds.y;
242  }
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
Container * pParent
Definition: C4Gui.h:376
int32_t x
Definition: C4Rect.h:30
friend class Container
Definition: C4Gui.h:472
virtual void ApplyInvElementOffset(int32_t &riX, int32_t &riY)
Definition: C4Gui.h:841

Here is the call graph for this function:

Here is the caller graph for this function:

int32_t C4GUI::ListBox::ContractToElementHeight ( )
inherited

Definition at line 186 of file C4GuiListBox.cpp.

References C4GUI::Element::GetBounds(), C4GUI::Window::GetClientRect(), C4Rect::Hgt, C4GUI::ListBox::pClientWindow, and C4GUI::Element::SetBounds().

Referenced by C4Network2ClientListDlg::C4Network2ClientListDlg().

187  {
188  if (!pClientWindow) return 0;
189  // calc superfluous bottom space
190  int32_t iExtraSpace = pClientWindow->GetBounds().Hgt - pClientWindow->GetClientRect().Hgt;
191  if (iExtraSpace <= 0) return 0;
192  // contract by it
193  C4Rect rcNewBounds = GetBounds();
194  rcNewBounds.Hgt -= iExtraSpace;
195  SetBounds(rcNewBounds);
196  return iExtraSpace;
197  }
Definition: C4Rect.h:27
C4Rect & GetClientRect() override
Definition: C4Gui.h:864
C4Rect & GetBounds()
Definition: C4Gui.h:445
void SetBounds(const C4Rect &rcNewBound)
Definition: C4Gui.h:446
int32_t Hgt
Definition: C4Rect.h:30
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GameOptionsList::Deactivate ( )

Definition at line 375 of file C4GameOptions.cpp.

References Application, and StdScheduler::Remove().

Referenced by C4GameLobby::MainDlg::UpdateRightTab(), and ~C4GameOptionsList().

376 {
377  // release timer if set
378  Application.Remove(this);
379 }
void Remove(StdSchedulerProc *pProc)
C4Application Application
Definition: C4Globals.cpp:44

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Control::DisableFocus ( )
protectedinherited

Definition at line 765 of file C4GuiContainers.cpp.

References C4GUI::Dialog::AdvanceFocus(), C4GUI::Element::GetDlg(), and C4GUI::Control::HasFocus().

Referenced by C4GUI::CheckBox::SetEnabled().

766  {
767  // has it any focus at all?
768  if (!HasFocus()) return;
769  // then de-focus it
770  Dialog *pDlg=GetDlg();
771  if (!pDlg) return;
772  pDlg->AdvanceFocus(true);
773  }
friend class Dialog
Definition: C4Gui.h:1070
bool HasFocus()
Definition: C4Gui.h:1067
virtual class Dialog * GetDlg()
Definition: C4Gui.cpp:288

Here is the call graph for this function:

Here is the caller graph for this function:

bool C4GUI::Element::DoContext ( )
inherited

Definition at line 417 of file C4Gui.cpp.

References C4Rect::Hgt, C4GUI::ContextHandler::OnContext(), C4GUI::Element::pContextHandler, C4GUI::Element::rcBounds, and C4Rect::Wdt.

Referenced by C4GUI::Control::KeyContext(), and C4GUI::ContextButton::MouseInput().

418  {
419  if (!pContextHandler) return false;
420  return pContextHandler->OnContext(this, rcBounds.Wdt/2, rcBounds.Hgt/2);
421  }
ContextHandler * pContextHandler
Definition: C4Gui.h:381
int32_t Wdt
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
virtual bool OnContext(Element *pOnElement, int32_t iX, int32_t iY)=0
int32_t Hgt
Definition: C4Rect.h:30

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::DoDragging ( CMouse rMouse,
int32_t  iX,
int32_t  iY,
DWORD  dwKeyParam 
)
virtualinherited

Reimplemented in C4GUI::Edit, and C4GUI::ScrollBar.

Definition at line 269 of file C4Gui.cpp.

References C4GUI::Element::iDragX, C4GUI::Element::iDragY, C4GUI::Element::pDragTarget, C4GUI::Element::rcBounds, C4GUI::Element::UpdatePos(), C4Rect::x, and C4Rect::y.

Referenced by C4GUI::Screen::MouseInput(), and C4GUI::Element::StopDragging().

270  {
271  // check if anything moved
272  if (pDragTarget && (iX != iDragX || iY != iDragY))
273  {
274  // move position, then
275  pDragTarget->rcBounds.x += iX-iDragX;
276  pDragTarget->rcBounds.y += iY-iDragY;
277  // drag X/Y is up-to-date if this is a child element of the drag target
279  }
280  }
int32_t iDragY
Definition: C4Gui.h:379
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
Window * pDragTarget
Definition: C4Gui.h:378
virtual void UpdatePos()
Definition: C4Gui.cpp:193
int32_t iDragX
Definition: C4Gui.h:379

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Window::Draw ( C4TargetFacet cgo)
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Container.

Reimplemented in C4GUI::Dialog, C4GUI::ContextMenu, C4ScriptGuiWindow, C4Menu, and C4ScoreboardDlg.

Definition at line 293 of file C4GuiContainers.cpp.

References C4Draw::ApplyZoom(), C4GUI::Container::Draw(), C4GUI::Element::DrawElement(), C4GUI::Element::GetBounds(), C4GUI::Window::GetClientRect(), C4Draw::GetPrimaryClipper(), C4Rect::Hgt, C4GUI::Window::IsComponentOutsideClientArea(), C4GUI::Element::IsVisible(), pDraw, C4GUI::Window::rcClientRect, C4Draw::SetPrimaryClipper(), C4Draw::SubPrimaryClipper(), C4TargetFacet::TargetX, C4TargetFacet::TargetY, C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4GUI::ContextMenu::Draw(), C4GUI::Dialog::Draw(), and C4GUI::Screen::Draw().

294  {
295  // invisible?
296  if (!IsVisible()) return;
297  // draw window itself
298  DrawElement(cgo);
299  // get target area
302  // clip to window area
303  int clx1, cly1, clx2, cly2;
304  pDraw->GetPrimaryClipper(clx1, cly1, clx2, cly2);
305  float nclx1 = cgo.TargetX+rcClipArea.x, ncly1 = cgo.TargetY+rcClipArea.y, nclx2 = cgo.TargetX+rcClipArea.x+rcClipArea.Wdt-1, ncly2 = cgo.TargetY+rcClipArea.y+rcClipArea.Hgt-1;
306  pDraw->ApplyZoom(nclx1, ncly1);
307  pDraw->ApplyZoom(nclx2, ncly2);
308  pDraw->SubPrimaryClipper(nclx1, ncly1, nclx2, ncly2);
309  // update target area
310  cgo.TargetX += rcClientRect.x; cgo.TargetY += rcClientRect.y;
311  // draw contents
312  Container::Draw(cgo);
313  // reset target area
314  cgo.TargetX -= rcClientRect.x; cgo.TargetY -= rcClientRect.y;
315  // reset clipper
316  pDraw->SetPrimaryClipper(clx1, cly1, clx2, cly2);
317  }
void ApplyZoom(float &X, float &Y)
Definition: C4Draw.cpp:784
bool GetPrimaryClipper(int &rX1, int &rY1, int &rX2, int &rY2)
Definition: C4Draw.cpp:722
bool IsVisible()
Definition: C4Gui.cpp:201
virtual bool IsComponentOutsideClientArea()
Definition: C4Gui.h:870
Definition: C4Rect.h:27
C4Rect rcClientRect
Definition: C4Gui.h:851
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
C4Rect & GetClientRect() override
Definition: C4Gui.h:864
C4Draw * pDraw
Definition: C4Draw.cpp:42
bool SetPrimaryClipper(int iX1, int iY1, int iX2, int iY2)
Definition: C4Draw.cpp:217
C4Rect & GetBounds()
Definition: C4Gui.h:445
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
virtual void DrawElement(C4TargetFacet &cgo)
Definition: C4Gui.h:388
int32_t Hgt
Definition: C4Rect.h:30
float TargetY
Definition: C4Facet.h:165
bool SubPrimaryClipper(int iX1, int iY1, int iX2, int iY2)
Definition: C4Draw.cpp:196
void Draw(C4TargetFacet &cgo) override

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::Draw3DFrame ( C4TargetFacet cgo,
bool  fUp = false,
int32_t  iIndent = 1,
BYTE  byAlpha = C4GUI_BorderAlpha,
bool  fDrawTop = true,
int32_t  iTopOff = 0,
bool  fDrawLeft = true,
int32_t  iLeftOff = 0 
)
protectedinherited

Definition at line 291 of file C4Gui.cpp.

References C4GUI_BorderColor1, C4GUI_BorderColor2, C4GUI_BorderColor3, C4Draw::DrawLineDw(), C4Rect::Hgt, pDraw, C4GUI::Element::rcBounds, C4Facet::Surface, C4TargetFacet::TargetX, C4TargetFacet::TargetY, C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4GUI::ProgressBar::DrawElement(), C4GUI::GroupBox::DrawElement(), C4GUI::Edit::DrawElement(), C4GUI::ListBox::DrawElement(), C4GUI::Tabular::DrawElement(), C4GUI::TextWindow::DrawElement(), C4GUI::ContextMenu::DrawElement(), C4GUI::ComboBox::DrawElement(), and C4GUI::Dialog::DrawElement().

292  {
293  DWORD dwAlpha = byAlpha<<24;
294  int32_t x0 = cgo.TargetX + rcBounds.x + iLeftOff,
295  y0 = cgo.TargetY + rcBounds.y + iTopOff,
296  x1 = cgo.TargetX + rcBounds.x + rcBounds.Wdt - 1,
297  y1 = cgo.TargetY + rcBounds.y + rcBounds.Hgt - 1;
298  if (fDrawTop) pDraw->DrawLineDw(cgo.Surface, (float)x0,(float)y0,(float)x1,(float)y0, C4GUI_BorderColor1 | dwAlpha);
299  if (fDrawLeft) pDraw->DrawLineDw(cgo.Surface, (float)x0,(float)y0,(float)x0,(float)y1, C4GUI_BorderColor1 | dwAlpha);
300  if (fDrawTop) pDraw->DrawLineDw(cgo.Surface, (float)(x0+1),(float)(y0+1),(float)(x1-1),(float)(y0+1), C4GUI_BorderColor2 | dwAlpha);
301  if (fDrawLeft) pDraw->DrawLineDw(cgo.Surface, (float)(x0+1),(float)(y0+1),(float)(x0+1),(float)(y1-1), C4GUI_BorderColor2 | dwAlpha);
302  pDraw->DrawLineDw(cgo.Surface, (float)x0,(float)y1,(float)x1,(float)y1, C4GUI_BorderColor3 | dwAlpha);
303  pDraw->DrawLineDw(cgo.Surface, (float)x1,(float)y0,(float)x1,(float)y1, C4GUI_BorderColor3 | dwAlpha);
304  pDraw->DrawLineDw(cgo.Surface, (float)(x0+1),(float)(y1-1),(float)(x1-1),(float)(y1-1), C4GUI_BorderColor1 | dwAlpha);
305  pDraw->DrawLineDw(cgo.Surface, (float)(x1-1),(float)(y0+1),(float)(x1-1),(float)(y1-1), C4GUI_BorderColor1 | dwAlpha);
306  }
#define C4GUI_BorderColor2
Definition: C4Gui.h:86
void DrawLineDw(C4Surface *sfcTarget, float x1, float y1, float x2, float y2, DWORD dwClr, float width=1.0f)
Definition: C4Draw.cpp:614
int32_t Wdt
Definition: C4Rect.h:30
#define C4GUI_BorderColor1
Definition: C4Gui.h:85
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
C4Draw * pDraw
Definition: C4Draw.cpp:42
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
#define C4GUI_BorderColor3
Definition: C4Gui.h:87
int32_t Hgt
Definition: C4Rect.h:30
C4Surface * Surface
Definition: C4Facet.h:117
float TargetY
Definition: C4Facet.h:165
uint32_t DWORD

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::DrawBar ( C4TargetFacet cgo,
DynBarFacet rFacets 
)
protectedinherited

Definition at line 308 of file C4Gui.cpp.

References C4Facet::Draw(), C4Facet::DrawX(), C4GUI::DynBarFacet::fctBegin, C4GUI::DynBarFacet::fctEnd, C4GUI::DynBarFacet::fctMiddle, C4Rect::Hgt, C4Facet::Hgt, C4GUI::Element::rcBounds, C4Facet::Surface, C4TargetFacet::TargetX, C4TargetFacet::TargetY, C4Rect::Wdt, C4Facet::Wdt, C4Rect::x, C4Facet::X, and C4Rect::y.

Referenced by C4GUI::WoodenLabel::DrawElement(), and C4GUI::Button::DrawElement().

309  {
310  if (rcBounds.Hgt == rFacets.fctMiddle.Hgt)
311  {
312  // exact bar
313  int32_t x0=cgo.TargetX+rcBounds.x, y0=cgo.TargetY+rcBounds.y;
314  int32_t iX = rFacets.fctBegin.Wdt, w=rFacets.fctMiddle.Wdt, wLeft=rFacets.fctBegin.Wdt, wRight=rFacets.fctEnd.Wdt;
315  int32_t iRightShowLength = wRight/3;
316  bool fOverflow = (wLeft > rcBounds.Wdt);
317  if (fOverflow) rFacets.fctBegin.Wdt = rcBounds.Wdt;
318  rFacets.fctBegin.Draw(cgo.Surface, x0,y0);
319  if (fOverflow) rFacets.fctBegin.Wdt = wLeft;
320  while (iX < rcBounds.Wdt-iRightShowLength)
321  {
322  int32_t w2=std::min(w, rcBounds.Wdt-iRightShowLength-iX); rFacets.fctMiddle.Wdt=w2;
323  rFacets.fctMiddle.Draw(cgo.Surface, x0+iX, y0);
324  iX += w;
325  }
326  rFacets.fctMiddle.Wdt=w;
327  fOverflow = (wRight > rcBounds.Wdt);
328  if (fOverflow)
329  {
330  rFacets.fctEnd.X += wRight - rcBounds.Wdt;
331  rFacets.fctEnd.Wdt = rcBounds.Wdt;
332  }
333  rFacets.fctEnd.Draw(cgo.Surface, x0+rcBounds.Wdt-rFacets.fctEnd.Wdt, y0);
334  if (fOverflow)
335  {
336  rFacets.fctEnd.X -= wRight - rcBounds.Wdt;
337  rFacets.fctEnd.Wdt = wRight;
338  }
339  }
340  else
341  {
342  // zoomed bar
343  float fZoom = (float) rcBounds.Hgt / rFacets.fctMiddle.Hgt;
344  int32_t x0=cgo.TargetX+rcBounds.x, y0=cgo.TargetY+rcBounds.y;
345  int32_t iX = int32_t(fZoom*rFacets.fctBegin.Wdt), w=int32_t(fZoom*rFacets.fctMiddle.Wdt), wOld=rFacets.fctMiddle.Wdt;
346  int32_t iRightShowLength = rFacets.fctEnd.Wdt/3;
347  rFacets.fctBegin.DrawX(cgo.Surface, x0,y0,int32_t(fZoom*rFacets.fctBegin.Wdt),rcBounds.Hgt);
348  while (iX < rcBounds.Wdt-(fZoom*iRightShowLength))
349  {
350  int32_t w2=std::min<int32_t>(w, rcBounds.Wdt-int32_t(fZoom*iRightShowLength)-iX); rFacets.fctMiddle.Wdt=long(float(w2)/fZoom);
351  rFacets.fctMiddle.DrawX(cgo.Surface, x0+iX, y0, w2,rcBounds.Hgt);
352  iX += w;
353  }
354  rFacets.fctMiddle.Wdt=wOld;
355  rFacets.fctEnd.DrawX(cgo.Surface, x0+rcBounds.Wdt-int32_t(fZoom*rFacets.fctEnd.Wdt), y0,int32_t(fZoom*rFacets.fctEnd.Wdt),rcBounds.Hgt);
356  }
357  }
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
int32_t Hgt
Definition: C4Rect.h:30
C4Surface * Surface
Definition: C4Facet.h:117
float TargetY
Definition: C4Facet.h:165

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::DrawElement ( C4TargetFacet cgo)
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 100 of file C4GuiListBox.cpp.

References C4GUI_ListBoxBarColor, C4GUI_ListBoxBarIndent, C4GUI_ListBoxInactSelColor, C4GUI_ListBoxSelColor, C4GUI::Element::Draw3DFrame(), C4Draw::DrawBoxDw(), C4Draw::DrawLineDw(), C4GUI::ListBox::fDrawBackground, C4GUI::ListBox::fDrawBorder, C4GUI::Element::GetBounds(), C4GUI::Window::GetClientRect(), C4GUI::Container::GetFirst(), C4GUI::Element::GetListItemTopSpacing(), C4GUI::Element::GetListItemTopSpacingBar(), C4GUI::Element::GetNext(), C4GUI::Control::HasDrawFocus(), C4Rect::Hgt, C4GUI::ListBox::pClientWindow, pDraw, C4GUI::ListBox::pSelectedItem, C4GUI::Element::rcBounds, C4Facet::Surface, C4TargetFacet::TargetX, C4TargetFacet::TargetY, C4Rect::Wdt, C4Rect::x, and C4Rect::y.

101  {
102  if (fDrawBackground)
104  if (fDrawBorder) Draw3DFrame(cgo);
105  // listbox bg: mark selected item
106  if (!pClientWindow) return;
107  if (pSelectedItem)
108  {
109  C4Rect rcSelArea = pSelectedItem->GetBounds();
110  rcSelArea.x += GetClientRect().x;
111  rcSelArea.y += GetClientRect().y + pClientWindow->GetClientRect().y;
112  // clip
113  if (rcSelArea.y < GetClientRect().y)
114  {
115  rcSelArea.Hgt -= GetClientRect().y - rcSelArea.y;
116  rcSelArea.y = GetClientRect().y;
117  }
118  rcSelArea.Hgt = std::min(rcSelArea.Hgt, GetClientRect().y + GetClientRect().Hgt - rcSelArea.y);
119  // draw
120  if (rcSelArea.Hgt>=0)
121  pDraw->DrawBoxDw(cgo.Surface, rcSelArea.x+cgo.TargetX, rcSelArea.y+cgo.TargetY,
122  rcSelArea.x+rcSelArea.Wdt+cgo.TargetX-1, rcSelArea.y+rcSelArea.Hgt+cgo.TargetY-1,
124  }
125  // draw delimeter bars
126  Element *pCurr = pClientWindow->GetFirst();
127  if (!pCurr) return;
128  while ((pCurr = pCurr->GetNext()))
129  if (pCurr->GetListItemTopSpacingBar())
130  {
131  int32_t iYSpace = pCurr->GetListItemTopSpacing();
132  int32_t iY = pCurr->GetBounds().y + GetClientRect().y + pClientWindow->GetClientRect().y - iYSpace/2;
133  int32_t iX0 = pCurr->GetBounds().x + GetClientRect().x + C4GUI_ListBoxBarIndent;
134  int32_t iX1 = iX0 + pClientWindow->GetClientRect().Wdt - 2*C4GUI_ListBoxBarIndent;
135  // clip
136  if (iY < GetClientRect().y || iY >= GetClientRect().y+GetClientRect().Hgt) continue;
137  // draw
138  pDraw->DrawLineDw(cgo.Surface, (float)(iX0+cgo.TargetX), (float)(iY+cgo.TargetY), (float)(iX1+cgo.TargetX), (float)(iY+cgo.TargetY), C4GUI_ListBoxBarColor);
139  }
140  }
#define C4GUI_ListBoxBarColor
Definition: C4Gui.h:68
#define C4GUI_ListBoxInactSelColor
Definition: C4Gui.h:63
#define C4GUI_ListBoxSelColor
Definition: C4Gui.h:62
Definition: C4Rect.h:27
void Draw3DFrame(C4TargetFacet &cgo, bool fUp=false, int32_t iIndent=1, BYTE byAlpha=C4GUI_BorderAlpha, bool fDrawTop=true, int32_t iTopOff=0, bool fDrawLeft=true, int32_t iLeftOff=0)
Definition: C4Gui.cpp:291
virtual int32_t GetListItemTopSpacing()
Definition: C4Gui.h:461
void DrawLineDw(C4Surface *sfcTarget, float x1, float y1, float x2, float y2, DWORD dwClr, float width=1.0f)
Definition: C4Draw.cpp:614
bool fDrawBorder
Definition: C4Gui.h:1513
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
Element * GetFirst()
Definition: C4Gui.h:829
void DrawBoxDw(C4Surface *sfcDest, int iX1, int iY1, int iX2, int iY2, DWORD dwClr)
Definition: C4Draw.cpp:846
C4Rect rcBounds
Definition: C4Gui.h:385
C4Rect & GetClientRect() override
Definition: C4Gui.h:864
C4Draw * pDraw
Definition: C4Draw.cpp:42
#define C4GUI_ListBoxBarIndent
Definition: C4Gui.h:124
C4Rect & GetBounds()
Definition: C4Gui.h:445
bool fDrawBackground
Definition: C4Gui.h:1512
int32_t x
Definition: C4Rect.h:30
Element * pSelectedItem
Definition: C4Gui.h:1510
float TargetX
Definition: C4Facet.h:165
int32_t Hgt
Definition: C4Rect.h:30
C4Surface * Surface
Definition: C4Facet.h:117
float TargetY
Definition: C4Facet.h:165
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

void C4GUI::Element::DrawHBarByVGfx ( C4TargetFacet cgo,
DynBarFacet rFacets 
)
protectedinherited

Definition at line 365 of file C4Gui.cpp.

References C4GUI::Element::DrawHVBar(), C4Rect::Hgt, C4GUI::Element::rcBounds, C4BltTransform::SetRotate(), C4TargetFacet::TargetX, C4TargetFacet::TargetY, C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4GUI::ScrollBar::DrawElement().

366  {
367  C4DrawTransform trf;
368  float fOffX = cgo.TargetX + rcBounds.x + rcBounds.Hgt/2;
369  float fOffY = cgo.TargetY + rcBounds.y + rcBounds.Hgt/2;
370  trf.SetRotate(-90.0f, fOffX, fOffY);
371 
372  DrawHVBar(cgo, rFacets, trf, rcBounds.Wdt);
373  }
void DrawHVBar(C4TargetFacet &cgo, DynBarFacet &rFacets, C4DrawTransform &trf, int32_t iMiddleLength)
Definition: C4Gui.cpp:375
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
void SetRotate(float iAngle, float fOffX, float fOffY)
int32_t Hgt
Definition: C4Rect.h:30
float TargetY
Definition: C4Facet.h:165

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::DrawHVBar ( C4TargetFacet cgo,
DynBarFacet rFacets,
C4DrawTransform trf,
int32_t  iMiddleLength 
)
protectedinherited

Definition at line 375 of file C4Gui.cpp.

References C4Facet::DrawT(), C4GUI::DynBarFacet::fctBegin, C4GUI::DynBarFacet::fctEnd, C4GUI::DynBarFacet::fctMiddle, C4Facet::Hgt, C4GUI::Element::rcBounds, C4Facet::Surface, C4TargetFacet::TargetX, C4TargetFacet::TargetY, C4Rect::x, and C4Rect::y.

Referenced by C4GUI::Element::DrawHBarByVGfx(), and C4GUI::Element::DrawVBar().

376  {
377  int32_t y0 = cgo.TargetY + rcBounds.y;
378  int32_t x0 = cgo.TargetX + rcBounds.x;
379 
380  // draw up arrow
381  rFacets.fctBegin.DrawT(cgo.Surface, x0, y0, 0, 0, &trf);
382 
383  // draw middle part
384  int32_t h = rFacets.fctMiddle.Hgt;
385  int32_t barHeight = iMiddleLength - (rFacets.fctBegin.Hgt + rFacets.fctEnd.Hgt);
386 
387  for (int32_t iY = 0; iY <= barHeight; iY += h)
388  {
389  int32_t h2 = std::min(h, barHeight - iY);
390  rFacets.fctMiddle.Hgt = h2;
391  rFacets.fctMiddle.DrawT(cgo.Surface, x0, y0 + rFacets.fctBegin.Hgt + iY, 0, 0, &trf);
392  }
393  rFacets.fctMiddle.Hgt = h;
394 
395  // draw lower arrow
396  rFacets.fctEnd.DrawT(cgo.Surface, x0, y0 + iMiddleLength - rFacets.fctEnd.Hgt, 0, 0, &trf);
397  }
int Hgt
Definition: C4Surface.h:65
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
C4Surface * Surface
Definition: C4Facet.h:117
float TargetY
Definition: C4Facet.h:165

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::DrawVBar ( C4TargetFacet cgo,
DynBarFacet rFacets 
)
protectedinherited

Definition at line 359 of file C4Gui.cpp.

References C4GUI::Element::DrawHVBar(), C4Rect::Hgt, and C4GUI::Element::rcBounds.

Referenced by C4GUI::ScrollBar::DrawElement().

360  {
361  C4DrawTransform trf(1);
362  DrawHVBar(cgo, rFacets, trf, rcBounds.Hgt);
363  }
void DrawHVBar(C4TargetFacet &cgo, DynBarFacet &rFacets, C4DrawTransform &trf, int32_t iMiddleLength)
Definition: C4Gui.cpp:375
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t Hgt
Definition: C4Rect.h:30

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::ElementPosChanged ( Element pOfElement)
overridevirtualinherited

Reimplemented from C4GUI::Container.

Definition at line 564 of file C4GuiListBox.cpp.

References C4GUI::Container::ElementSizeChanged(), C4GUI::Element::GetParent(), and C4GUI::ListBox::UpdateElementPositions().

565  {
566  // inherited
567  if (pOfElement->GetParent() == this)
568  Control::ElementSizeChanged(pOfElement);
569  // update positions of all list items
571  }
void UpdateElementPositions()
virtual void ElementSizeChanged(Element *pOfElement)
Definition: C4Gui.h:753

Here is the call graph for this function:

void C4GUI::ListBox::ElementSizeChanged ( Element pOfElement)
overridevirtualinherited

Reimplemented from C4GUI::Container.

Definition at line 551 of file C4GuiListBox.cpp.

References C4GUI::Container::ElementSizeChanged(), C4GUI::Element::GetParent(), C4GUI::ListBox::UpdateColumnCount(), and C4GUI::ListBox::UpdateElementPositions().

552  {
553  // inherited
554  if (pOfElement->GetParent() == this)
555  {
556  Control::ElementSizeChanged(pOfElement);
557  // update col count if list element container was resized
559  }
560  // update positions of all list items
562  }
void UpdateElementPositions()
virtual void ElementSizeChanged(Element *pOfElement)
Definition: C4Gui.h:753
void UpdateColumnCount()

Here is the call graph for this function:

Iterator C4GUI::Container::end ( )
inlineinherited

Definition at line 825 of file C4Gui.h.

Referenced by C4ScriptGuiWindow::ClearPointers().

825 { return Iterator(nullptr); }

Here is the caller graph for this function:

void C4GUI::ListBox::FreezeScrolling ( )
inlineinherited

Definition at line 1562 of file C4Gui.h.

References C4GUI::ScrollWindow::Freeze().

1562 { pClientWindow->Freeze(); }
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

C4Rect& C4GUI::Element::GetBounds ( )
inlineinherited

Definition at line 445 of file C4Gui.h.

References C4GUI::Element::rcBounds.

Referenced by C4GUI::ListBox::AddElement(), C4Menu::AdjustPosition(), C4GameOverDlg::C4GameOverDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupNetListEntry::C4StartupNetListEntry(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::ContextMenu::CheckOpenSubmenu(), C4GUI::ListBox::ContractToElementHeight(), C4MapFolderData::CreateGUIElements(), C4GUI::Screen::DoContext(), C4GUI::Window::Draw(), C4GUI::ListBox::DrawElement(), C4GUI::ContextMenu::DrawElement(), C4GUI::TextWindow::ElementPosChanged(), C4GUI::TextWindow::ElementSizeChanged(), C4GUI::Dialog::GetMarginTop(), C4GUI::ScrollBar::GetMaxScroll(), C4GUI::GetScreenHgt(), C4GUI::GetScreenWdt(), C4Menu::InitSize(), C4GUI::ListBox::InsertElement(), C4GUI::ScrollWindow::IsRangeInView(), C4StartupPlrSelDlg::PlayerListItem::Load(), C4GUI::Window::MouseInput(), C4GUI::ScrollBar::MouseInput(), C4GUI::ListBox::MouseInput(), C4GUI::Screen::MouseInput(), C4StartupPlrSelDlg::OnNewBtn(), C4GUI::ScrollBar::OnPosChanged(), C4StartupPlrSelDlg::OnPropertyBtn(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::ScrollWindow::ScrollBy(), C4GUI::ListBox::ScrollItemInView(), C4GUI::ScrollWindow::ScrollPages(), C4GUI::ScrollWindow::ScrollRangeInView(), C4GUI::ScrollWindow::ScrollToBottom(), C4GUI::Tabular::SetGfx(), C4GoalDisplay::SetGoals(), C4GUI::TextWindow::SetPicture(), C4GUI::Dialog::SetTitle(), C4GUI::ScrollBar::Update(), C4GUI::ScrollWindow::Update(), C4StartupPlrSelDlg::PlayerListItem::UpdateCore(), C4GUI::ListBox::UpdateElementPosition(), C4Menu::UpdateElementPositions(), C4GUI::ListBox::UpdateElementPositions(), C4GUI::ScrollWindow::UpdateOwnPos(), C4Menu::UpdateScrollBar(), and C4GUI::TextWindow::UpdateSize().

445 { return rcBounds; }
C4Rect rcBounds
Definition: C4Gui.h:385

Here is the caller graph for this function:

C4Rect& C4GUI::Window::GetClientRect ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 864 of file C4Gui.h.

References C4GUI::Window::rcClientRect.

Referenced by C4GameOverDlg::C4GameOverDlg(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4StartupMainDlg::C4StartupMainDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupOptionsDlg::C4StartupOptionsDlg(), C4StartupPlrColorPickerDlg::C4StartupPlrColorPickerDlg(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::ContextMenu::CheckOpenSubmenu(), C4GUI::ListBox::ContractToElementHeight(), C4MapFolderData::CreateGUIElements(), C4GUI::InfoDialog::CreateSubComponents(), C4GUI::Window::Draw(), C4GUI::ListBox::DrawElement(), C4GUI::ContextMenu::DrawElement(), C4GUI::FullscreenDialog::FullscreenDialog(), C4GUI::ListBox::GetItemWidth(), C4FileSelDlg::InitElements(), C4GUI::InputDialog::InputDialog(), C4GUI::LabeledEdit::LabeledEdit(), C4GameLobby::MainDlg::MainDlg(), C4GUI::MessageDialog::MessageDialog(), C4GUI::Window::MouseInput(), C4GUI::ContextMenu::MouseInput(), C4GUI::Screen::MouseInput(), C4GUI::ScrollBar::OnPosChanged(), C4GUI::ProgressDialog::ProgressDialog(), C4GameLobby::ScenDesc::ScenDesc(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::ScrollWindow::ScrollBy(), C4GUI::ScrollWindow::ScrollRangeInView(), C4GUI::ScrollWindow::ScrollToBottom(), C4GUI::ScrollWindow::ScrollWindow(), C4GoalDisplay::SetGoals(), C4GUI::FullscreenDialog::SetTitle(), C4GUI::TextWindow::TextWindow(), C4GUI::ScrollBar::Update(), C4GUI::ListBox::UpdateColumnCount(), and C4GUI::TextWindow::UpdateSize().

864 { return rcClientRect; }
C4Rect rcClientRect
Definition: C4Gui.h:851

Here is the caller graph for this function:

C4Rect C4GUI::Element::GetContainedClientRect ( )
inlineinherited

Definition at line 448 of file C4Gui.h.

References C4GUI::Element::GetClientRect(), C4Rect::x, and C4Rect::y.

Referenced by C4GUI::Tabular::AddSheet(), C4ChartDialog::C4ChartDialog(), C4Network2ClientListDlg::C4Network2ClientListDlg(), C4Network2StartWaitDlg::C4Network2StartWaitDlg(), C4StartupAboutDlg::C4StartupAboutDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupNetListEntry::C4StartupNetListEntry(), C4FileSelDlg::DefaultListItem::DefaultListItem(), C4ChatDlg::DoPlacement(), C4GUI::Element::GetToprightCornerRect(), C4GUI::InputDialog::InputDialog(), C4GameLobby::MainDlg::MainDlg(), C4GUI::TextWindow::TextWindow(), C4Menu::UpdateElementPositions(), C4ChatControl::ChatSheet::NickItem::UpdateOwnPos(), C4FileSelDlg::DefaultListItem::UpdateOwnPos(), C4StartupScenSelDlg::ScenListItem::UpdateOwnPos(), C4GUI::ScrollWindow::UpdateOwnPos(), C4ChatControl::UpdateSize(), C4ChatDlg::UpdateSize(), C4GUI::Tabular::UpdateSize(), and C4GUI::TextWindow::UpdateSize().

448 { C4Rect rc=GetClientRect(); rc.x=rc.y=0; return rc; }
Definition: C4Rect.h:27
int32_t y
Definition: C4Rect.h:30
int32_t x
Definition: C4Rect.h:30
virtual C4Rect & GetClientRect()
Definition: C4Gui.h:447

Here is the call graph for this function:

Here is the caller graph for this function:

Container* C4GUI::Container::GetContainer ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 831 of file C4Gui.h.

831 { return this; } // returns parent for elements; this for containers
ContextHandler * C4GUI::Element::GetContextHandler ( )
virtualinherited

Reimplemented in C4GUI::Dialog.

Definition at line 429 of file C4Gui.cpp.

References C4GUI::Element::GetContextHandler(), C4GUI::Element::pContextHandler, and C4GUI::Element::pParent.

Referenced by C4GUI::ContextButton::ContextButton(), C4GUI::Element::GetContextHandler(), and C4GUI::Element::MouseInput().

430  {
431  // fallback to parent context, if own is not assigned
433  }
ContextHandler * pContextHandler
Definition: C4Gui.h:381
virtual ContextHandler * GetContextHandler()
Definition: C4Gui.cpp:429
Container * pParent
Definition: C4Gui.h:376

Here is the call graph for this function:

Here is the caller graph for this function:

virtual class DialogWindow* C4GUI::Element::GetDialogWindow ( )
inlineprotectedvirtualinherited

Reimplemented in C4GUI::Dialog.

Definition at line 404 of file C4Gui.h.

404 { return nullptr; } // return DialogWindow if this element is a dialog
Dialog * C4GUI::Element::GetDlg ( )
virtualinherited

Reimplemented in C4GUI::Dialog.

Definition at line 288 of file C4Gui.cpp.

References C4GUI::Element::GetDlg(), and C4GUI::Element::pParent.

Referenced by C4GUI::Control::DisableFocus(), C4ChatControl::DlgEnter(), C4ChatControl::GetDefaultControl(), C4GUI::Element::GetDlg(), C4GUI::ContextMenu::GetTargetDialog(), C4GUI::Control::HasDrawFocus(), C4GUI::Element::IsInActiveDlg(), C4GUI::Label::MouseInput(), C4GUI::Control::MouseInput(), C4GUI::Screen::MouseInput(), C4ChatControl::OnConnectBtn(), C4GUI::RenameEdit::OnFinishInput(), C4GUI::Label::OnHotkey(), C4ChatControl::OnLoginDataEnter(), C4GUI::CloseButton::OnPress(), C4GUI::CloseIconButton::OnPress(), C4GUI::RenameEdit::RenameEdit(), C4GUI::Container::SetVisibility(), and C4GUI::Screen::ShowDialog().

288 { if (pParent) return pParent->GetDlg (); return nullptr; }
Container * pParent
Definition: C4Gui.h:376
virtual class Dialog * GetDlg()
Definition: C4Gui.cpp:288

Here is the call graph for this function:

Here is the caller graph for this function:

Element * C4GUI::Container::GetElementByIndex ( int32_t  i)
inherited

Definition at line 223 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, and C4GUI::Element::pNext.

Referenced by C4GUI::ContextMenu::GetIndexedEntry(), C4Menu::GetItem(), C4GUI::Tabular::GetSheet(), and C4GUI::ContextMenu::SelectItem().

224  {
225  // get next until end of list or queried index is reached
226  // if i is negative or equal or larger than childcount, the loop will never break and nullptr returned
227  Element *pEl;
228  for (pEl = pFirst; i-- && pEl; pEl=pEl->pNext) {}
229  return pEl;
230  }
Element * pFirst
Definition: C4Gui.h:750
Element * pNext
Definition: C4Gui.h:377

Here is the caller graph for this function:

int32_t C4GUI::Container::GetElementCount ( )
inherited

Definition at line 232 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, and C4GUI::Element::pNext.

Referenced by C4ScriptGuiWindow::ExecuteCommand(), C4GUI::Tabular::GetSheetCount(), and C4GUI::ListBox::SortElements().

233  {
234  int32_t cnt=0;
235  for (Element *pEl = pFirst; pEl; pEl=pEl->pNext) ++cnt;
236  return cnt;
237  }
Element * pFirst
Definition: C4Gui.h:750
Element * pNext
Definition: C4Gui.h:377

Here is the caller graph for this function:

Element* C4GUI::ListBox::GetFirst ( )
inlineinherited

Definition at line 1571 of file C4Gui.h.

References C4GUI::Container::GetFirst().

Referenced by C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4GUI::ListBox::CharIn(), C4StartupNetDlg::DoRefresh(), C4StartupNetListEntry::GetNextLower(), C4FileSelDlg::GetSelection(), C4StartupPlrSelDlg::OnItemCheckChange(), C4GUI::ListBox::SelectFirstEntry(), C4FileSelDlg::SetSelection(), and C4PlayerInfoListBox::Update().

1571 { return pClientWindow ? pClientWindow->GetFirst() : nullptr; }
Element * GetFirst()
Definition: C4Gui.h:829
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

Element* C4GUI::Container::GetFirstContained ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 773 of file C4Gui.h.

References C4GUI::Container::pFirst.

Referenced by C4GUI::ListBox::OnGetFocus().

773 { return pFirst; }
Element * pFirst
Definition: C4Gui.h:750

Here is the caller graph for this function:

Element * C4GUI::Container::GetFirstNestedElement ( bool  fBackwards)
overridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 204 of file C4GuiContainers.cpp.

References C4GUI::Element::GetFirstNestedElement(), C4GUI::Container::pFirst, and C4GUI::Container::pLast.

Referenced by C4GUI::Container::GetNextNestedElement().

205  {
206  // get first/last in own list
207  if (pFirst) return (fBackwards ? pLast : pFirst)->GetFirstNestedElement(fBackwards);
208  // no own list: return this one
209  return this;
210  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750

Here is the call graph for this function:

Here is the caller graph for this function:

int32_t C4GUI::Element::GetHeight ( )
inlineinherited

Definition at line 444 of file C4Gui.h.

References C4Rect::Hgt.

Referenced by C4GUI::Screen::ShowDialog().

444 { return rcBounds.Hgt; }
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t Hgt
Definition: C4Rect.h:30

Here is the caller graph for this function:

int32_t C4GUI::ListBox::GetItemWidth ( )
inlineinherited

Definition at line 1545 of file C4Gui.h.

References C4GUI::Window::GetClientRect(), and C4Rect::Wdt.

Referenced by C4GUI::ListBox::AddElement(), C4GUI::ListBox::InsertElement(), and C4GUI::ListBox::UpdateElementPosition().

int32_t iMultiColItemWidth
Definition: C4Gui.h:1507
int32_t Wdt
Definition: C4Rect.h:30
C4Rect & GetClientRect() override
Definition: C4Gui.h:864
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

Element* C4GUI::ListBox::GetLast ( )
inlineinherited

Definition at line 1572 of file C4Gui.h.

References C4GUI::Container::GetLast().

1572 { return pClientWindow ? pClientWindow->GetLast() : nullptr; }
Element * GetLast()
Definition: C4Gui.h:830
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

virtual Element* C4GUI::Container::GetLastContained ( )
inlinevirtualinherited

Definition at line 774 of file C4Gui.h.

References C4GUI::Container::pLast.

774 { return pLast; }
Element * pLast
Definition: C4Gui.h:750
virtual int32_t C4GUI::Element::GetListItemTopSpacing ( )
inlinevirtualinherited

Reimplemented in C4StartupNetListEntry.

Definition at line 461 of file C4Gui.h.

References C4GUI_DefaultListSpacing.

Referenced by C4GUI::ListBox::AddElement(), C4GUI::ListBox::DrawElement(), and C4GUI::ListBox::UpdateElementPositions().

461 { return C4GUI_DefaultListSpacing; }
#define C4GUI_DefaultListSpacing
Definition: C4Gui.h:123

Here is the caller graph for this function:

virtual bool C4GUI::Element::GetListItemTopSpacingBar ( )
inlinevirtualinherited

Definition at line 462 of file C4Gui.h.

Referenced by C4GUI::ListBox::DrawElement().

462 { return false; }

Here is the caller graph for this function:

int32_t C4GUI::ListBox::GetMarginBottom ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Window.

Definition at line 1578 of file C4Gui.h.

1578 { return 3; }
int32_t C4GUI::ListBox::GetMarginLeft ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Window.

Definition at line 1576 of file C4Gui.h.

Referenced by C4GUI::ListBox::MouseInput().

1576 { return 3; }

Here is the caller graph for this function:

int32_t C4GUI::ListBox::GetMarginRight ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Window.

Definition at line 1577 of file C4Gui.h.

1577 { return 3; }
int32_t C4GUI::ListBox::GetMarginTop ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Window.

Definition at line 1575 of file C4Gui.h.

Referenced by C4GUI::ListBox::MouseInput().

1575 { return 3; }

Here is the caller graph for this function:

Element * C4GUI::Container::GetNextNestedElement ( Element pPrevElement,
bool  fBackwards 
)
inherited

Definition at line 171 of file C4GuiContainers.cpp.

References C4GUI::Element::GetFirstContained(), C4GUI::Element::GetFirstNestedElement(), C4GUI::Container::GetFirstNestedElement(), C4GUI::Element::pNext, C4GUI::Element::pParent, and C4GUI::Element::pPrev.

Referenced by C4GUI::Dialog::AdvanceFocus().

172  {
173  if (fBackwards)
174  {
175  // this is last
176  if (pPrevElement == this) return nullptr;
177  // no previous given?
178  if (!pPrevElement)
179  // then use last nested for backwards search
180  return GetFirstNestedElement(true);
181  // get nested, previous element if present
182  if (pPrevElement->pPrev) return pPrevElement->pPrev->GetFirstNestedElement(true);
183  // if not, return parent (could be this)
184  return pPrevElement->pParent;
185  }
186  else
187  {
188  // forward search: first element is this
189  if (!pPrevElement) return this;
190  // check next nested
191  Element *pEl;
192  if ((pEl = pPrevElement->GetFirstContained())) return pEl;
193  // check next in list, going upwards until this container is reached
194  while (pPrevElement && pPrevElement != this)
195  {
196  if ((pEl = pPrevElement->pNext)) return pEl;
197  pPrevElement = pPrevElement->pParent;
198  }
199  // nothing found
200  }
201  return nullptr;
202  }
Element * GetFirstNestedElement(bool fBackwards) override

Here is the call graph for this function:

Here is the caller graph for this function:

const char* C4GUI::Element::GetOwnToolTip ( )
inlineinherited

Definition at line 440 of file C4Gui.h.

References StdStrBuf::getData().

440 { return ToolTip.getData(); } // return tooltip const char*, without fallback to parent
const char * getData() const
Definition: StdBuf.h:442

Here is the call graph for this function:

C4ScenarioParameters* C4GameOptionsList::GetParameters ( )
inline

Definition at line 194 of file C4GameOptions.h.

194 { return params; } // used by children
Element* C4GUI::Element::GetPrev ( ) const
inlineinherited

Definition at line 450 of file C4Gui.h.

References C4GUI::Element::pPrev.

Referenced by C4GUI::ListBox::AddElement(), C4GUI::Screen::GetDialog(), C4GUI::Screen::GetTopDialog(), C4GUI::Window::MouseInput(), C4GUI::Screen::MouseInput(), and C4GUI::Container::ReverseIterator::operator++().

450 { return pPrev; }
Element * pPrev
Definition: C4Gui.h:377

Here is the caller graph for this function:

Screen * C4GUI::Element::GetScreen ( )
virtualinherited

Reimplemented in C4GUI::Screen, and C4GUI::ContextMenu.

Definition at line 289 of file C4Gui.cpp.

References C4GUI::Element::GetScreen(), and C4GUI::Element::pParent.

Referenced by C4GUI::Dialog::Close(), C4StartupScenSelDlg::DoOK(), C4GUI::Dialog::Draw(), C4GUI::ContextButton::DrawElement(), C4GUI::ComboBox::DrawElement(), C4GUI::Dialog::FadeOut(), C4GUI::Element::GetScreen(), C4GUI::Control::HasDrawFocus(), C4GUI::Dialog::IsActive(), C4StartupScenSelDlg::KeyDelete(), C4GUI::ComboBox::MouseInput(), C4GameOptionButtons::OnBtnComment(), C4GameOptionButtons::OnBtnPassword(), C4StartupPlrPropertiesDlg::OnClosed(), C4StartupPlrPropertiesDlg::OnClrChangeCustom(), C4ChatControl::OnConnectBtn(), C4GUI::CBContextHandler< CBClass >::OnContext(), C4StartupPlrSelDlg::OnDelBtn(), C4StartupPlrSelDlg::OnDelBtnConfirm(), C4StartupPlrSelDlg::OnNewBtn(), C4StartupPlrPropertiesDlg::OnPictureBtn(), C4StartupPlrSelDlg::OnPropertyBtn(), C4StartupMainDlg::OnShown(), C4StartupMainDlg::OnTODO(), C4StartupOptionsDlg::SaveConfig(), C4GUI::Element::SetVisibility(), C4GameLobby::MainDlg::Start(), C4StartupScenSelDlg::StartScenario(), C4ScoreboardDlg::Update(), C4StartupPlrSelDlg::PlayerListItem::UpdateCore(), C4FileSelDlg::UserClose(), and C4ChatControl::UserQueryQuit().

289 { if (pParent) return pParent->GetScreen(); return nullptr; }
Container * pParent
Definition: C4Gui.h:376
virtual Screen * GetScreen()
Definition: C4Gui.cpp:289

Here is the call graph for this function:

Here is the caller graph for this function:

Element* C4GUI::ListBox::GetSelectedItem ( )
inlineinherited

Definition at line 1580 of file C4Gui.h.

References C4GUI::ListBox::pSelectedItem.

Referenced by C4GUI::ListBox::CharIn(), C4StartupNetDlg::DoOK(), C4StartupPlrSelDlg::GetSelection(), C4PlayerInfoListBox::IsPlayerItemCollapsed(), C4StartupNetDlg::OnReferenceEntryAdd(), and C4FileSelDlg::UpdateSelection().

1580 { return pSelectedItem; } // get focused listbox item
Element * pSelectedItem
Definition: C4Gui.h:1510

Here is the caller graph for this function:

const char * C4GUI::Element::GetToolTip ( )
inherited

Definition at line 423 of file C4Gui.cpp.

References StdStrBuf::getData(), C4GUI::Element::GetToolTip(), StdStrBuf::isNull(), and C4GUI::Element::pParent.

Referenced by C4GUI::CMouse::Draw(), C4GUI::Element::GetToolTip(), C4GameLobby::MainDlg::OnRightTabContext(), and C4GameLobby::MainDlg::UpdateRightTab().

424  {
425  // fallback to parent tooltip, if own is not assigned
426  return (!pParent || !ToolTip.isNull()) ? ToolTip.getData() : pParent->GetToolTip();
427  }
const char * getData() const
Definition: StdBuf.h:442
const char * GetToolTip()
Definition: C4Gui.cpp:423
Container * pParent
Definition: C4Gui.h:376
bool isNull() const
Definition: StdBuf.h:441

Here is the call graph for this function:

Here is the caller graph for this function:

C4Rect C4GUI::Element::GetToprightCornerRect ( int32_t  iWidth = 16,
int32_t  iHeight = 16,
int32_t  iHIndent = 4,
int32_t  iVIndent = 4,
int32_t  iIndexX = 0 
)
inherited

Definition at line 399 of file C4Gui.cpp.

References C4GUI::Element::GetClientRect(), C4GUI::Element::GetContainedClientRect(), C4GUI::Element::GetContainer(), C4Rect::Hgt, C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4GUI::ContextButton::ContextButton(), C4GUI::Dialog::SetTitle(), and C4GUI::Dialog::UpdateSize().

400  {
401  // bounds by topright corner of element
402  C4Rect rtBounds = (GetContainer() != this) ? GetClientRect() : GetContainedClientRect();
403  rtBounds.x += rtBounds.Wdt - (iWidth + iHIndent) * (iIndexX + 1);
404  rtBounds.y += iVIndent;
405  rtBounds.Wdt = rtBounds.Hgt = iHeight;
406  return rtBounds;
407  }
virtual Container * GetContainer()
Definition: C4Gui.h:410
Definition: C4Rect.h:27
C4Rect GetContainedClientRect()
Definition: C4Gui.h:448
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
int32_t x
Definition: C4Rect.h:30
virtual C4Rect & GetClientRect()
Definition: C4Gui.h:447
int32_t Hgt
Definition: C4Rect.h:30

Here is the call graph for this function:

Here is the caller graph for this function:

int32_t C4GUI::Element::GetWidth ( )
inlineinherited

Definition at line 443 of file C4Gui.h.

References C4Rect::Wdt.

Referenced by C4GUI::Screen::ShowDialog().

443 { return rcBounds.Wdt; }
int32_t Wdt
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385

Here is the caller graph for this function:

bool C4GUI::Control::HasDrawFocus ( )
inherited

Definition at line 751 of file C4GuiContainers.cpp.

References C4GUI::Element::GetDlg(), C4GUI::Element::GetScreen(), C4GUI::Control::HasFocus(), and C4GUI::Dialog::IsActive().

Referenced by C4GUI::Button::DrawElement(), C4GUI::IconButton::DrawElement(), C4GUI::ArrowButton::DrawElement(), C4GUI::FacetButton::DrawElement(), C4GUI::Edit::DrawElement(), C4GUI::CheckBox::DrawElement(), C4GUI::ListBox::DrawElement(), C4GUI::Tabular::DrawElement(), C4GUI::ContextButton::DrawElement(), and C4GUI::ComboBox::DrawElement().

752  {
753  // has focus at all?
754  if (!HasFocus()) return false;
755  // is screen ready and not in context?
756  if (GetScreen() && GetScreen()->HasContext()) return false;
757  // get dlg
758  Dialog *pDlg=GetDlg();
759  // dlg-less control has focus, OK (shouldn't happen)
760  if (!pDlg) return true;
761  // check if dlg is active
762  return pDlg->IsActive(true);
763  }
friend class Dialog
Definition: C4Gui.h:1070
bool HasFocus()
Definition: C4Gui.h:1067
virtual class Dialog * GetDlg()
Definition: C4Gui.cpp:288
virtual Screen * GetScreen()
Definition: C4Gui.cpp:289

Here is the call graph for this function:

Here is the caller graph for this function:

bool C4GUI::Control::HasFocus ( )
inlineinherited

Definition at line 1067 of file C4Gui.h.

References C4GUI::Container::IsFocused(), and C4GUI::Element::pParent.

Referenced by C4GUI::Control::DisableFocus(), C4GUI::Control::HasDrawFocus(), C4GUI::ListBox::IsFocused(), and C4GUI::Control::MouseInput().

1067 { return pParent && pParent->IsFocused(this); }
Container * pParent
Definition: C4Gui.h:376
virtual bool IsFocused(Control *pCtrl)
Definition: C4Gui.h:836

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Container::InsertElement ( Element pChild,
Element pInsertBefore 
)
inherited

Definition at line 150 of file C4GuiContainers.cpp.

References C4GUI::Container::AddElement(), C4GUI::Container::pFirst, C4GUI::Element::pNext, C4GUI::Element::pParent, C4GUI::Element::pPrev, and C4GUI::Container::RemoveElement().

Referenced by C4GUI::ListBox::InsertElement(), and C4GUI::Screen::ShowDialog().

151  {
152  // add?
153  if (!pInsertBefore) { AddElement(pChild); return; }
154  // safety
155  if (!pChild || pInsertBefore->pParent != this) return;
156  // remove from any previous container
157  if (pChild->pParent) pChild->pParent->RemoveElement(pChild);
158  // add before given element
159  if ((pChild->pPrev = pInsertBefore->pPrev))
160  pInsertBefore->pPrev->pNext = pChild;
161  else
162  pFirst = pChild;
163  pChild->pNext = pInsertBefore; pInsertBefore->pPrev = pChild;
164  pChild->pParent = this;
165 
166  assert(pChild->pNext != pChild);
167  assert(pChild->pPrev != pChild);
168  assert(pChild->pParent != pChild);
169  }
Element * pFirst
Definition: C4Gui.h:750
void AddElement(Element *pChild)
Element * pPrev
Definition: C4Gui.h:377
Container * pParent
Definition: C4Gui.h:376
Element * pNext
Definition: C4Gui.h:377

Here is the call graph for this function:

Here is the caller graph for this function:

bool C4GUI::ListBox::InsertElement ( Element pChild,
Element pInsertBefore,
int32_t  iIndent = 0 
)
inherited

Definition at line 534 of file C4GuiListBox.cpp.

References C4GUI::Element::GetBounds(), C4GUI::ListBox::GetItemWidth(), C4GUI::Container::InsertElement(), C4GUI::ListBox::pClientWindow, C4GUI::ListBox::UpdateElementPositions(), C4GUI::Element::UpdateOwnPos(), C4Rect::Wdt, and C4Rect::x.

Referenced by C4StartupNetListEntry::C4StartupNetListEntry(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4Network2ResDlg::Update(), and C4Network2ClientListBox::Update().

535  {
536  // fail if no client window is present
537  if (!pClientWindow) return false;
538  // add to scroll window
539  pClientWindow->InsertElement(pChild, pInsertBefore);
540  // resize to horizontal list extents
541  C4Rect &rcChildBounds = pChild->GetBounds();
542  rcChildBounds.x = iIndent;
543  rcChildBounds.Wdt = GetItemWidth() - iIndent ;
544  pChild->UpdateOwnPos();
545  // update all element positions (and scrolling)
547  // done, success
548  return true;
549  }
void UpdateElementPositions()
Definition: C4Rect.h:27
int32_t Wdt
Definition: C4Rect.h:30
void InsertElement(Element *pChild, Element *pInsertBefore)
int32_t x
Definition: C4Rect.h:30
int32_t GetItemWidth()
Definition: C4Gui.h:1545
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool C4GUI::Window::IsComponentOutsideClientArea ( )
inlinevirtualinherited

Reimplemented in C4GUI::FullscreenDialog, C4GUI::Dialog, C4GUI::ScrollWindow, and C4StartupPlrPropertiesDlg.

Definition at line 870 of file C4Gui.h.

Referenced by C4GUI::Window::Draw().

870 { return false; } // if set, drawing routine of subcomponents will clip to Bounds rather than to ClientRect

Here is the caller graph for this function:

virtual bool C4GUI::Element::IsExternalDrawDialog ( )
inlineprotectedvirtualinherited

Reimplemented in C4GUI::Dialog, and C4Menu.

Definition at line 402 of file C4Gui.h.

402 { return false; }
bool C4GUI::ListBox::IsFocused ( Control pCtrl)
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Container.

Definition at line 1518 of file C4Gui.h.

References C4GUI::Control::HasFocus(), and C4GUI::Container::IsFocused().

1519  {
1520  // subcontrol also counts as focused if the list has focus and the subcontrol is selected
1521  return Control::IsFocused(pCtrl) || (HasFocus() && pSelectedItem == pCtrl);
1522  }
bool HasFocus()
Definition: C4Gui.h:1067
Element * pSelectedItem
Definition: C4Gui.h:1510
virtual bool IsFocused(Control *pCtrl)
Definition: C4Gui.h:836

Here is the call graph for this function:

Control* C4GUI::ListBox::IsFocusElement ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Control.

Definition at line 1524 of file C4Gui.h.

1524 { return this; }; // this control can gain focus
bool C4GUI::ListBox::IsFocusOnClick ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Control.

Definition at line 1523 of file C4Gui.h.

1523 { return true; } // list boxes do get focus on click
bool C4GUI::Element::IsImmediateToolTip ( ) const
inlineinherited

Definition at line 441 of file C4Gui.h.

Referenced by C4GUI::CMouse::Draw().

441 { return is_immediate_tooltip; }

Here is the caller graph for this function:

bool C4GUI::Element::IsInActiveDlg ( bool  fForKeyboard)
inherited

Definition at line 435 of file C4Gui.cpp.

References C4GUI::Element::GetDlg(), and C4GUI::Dialog::IsActive().

Referenced by C4GUI::ControlKeyDlgCB< TargetClass >::CheckCondition(), C4GUI::Button::DrawElement(), C4GUI::IconButton::DrawElement(), C4GUI::ArrowButton::DrawElement(), C4GUI::FacetButton::DrawElement(), C4GUI::CheckBox::DrawElement(), and C4GUI::ContextButton::DrawElement().

436  {
437  // get dlg
438  Dialog *pDlg=GetDlg();
439  if (!pDlg) return false;
440  // check if dlg is active
441  return pDlg->IsActive(fForKeyboard);
442  }
virtual class Dialog * GetDlg()
Definition: C4Gui.cpp:288

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool C4GUI::Element::IsMenu ( )
inlineprotectedvirtualinherited

Reimplemented in C4GUI::ContextMenu, and C4GUI::ContextMenu::Entry.

Definition at line 403 of file C4Gui.h.

Referenced by C4GUI::Element::RemoveElement().

403 { return false; }

Here is the caller graph for this function:

bool C4GUI::ListBox::IsMultiColumn ( ) const
inlineinherited

Definition at line 1586 of file C4Gui.h.

1586 { return iColCount > 1; }
int32_t iColCount
Definition: C4Gui.h:1508
virtual bool C4GUI::Element::IsOwnPtrElement ( )
inlineprotectedvirtualinherited

Reimplemented in C4Menu.

Definition at line 401 of file C4Gui.h.

Referenced by C4GUI::Container::ClearChildren().

401 { return false; } // if true is returned, item will not be deleted when container is cleared

Here is the caller graph for this function:

bool C4GUI::Container::IsParentOf ( Element pEl)
overridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 239 of file C4GuiContainers.cpp.

References C4GUI::Element::GetParent().

Referenced by C4GUI::Control::MouseInput(), and C4GUI::Container::SetVisibility().

240  {
241  // return whether this is the parent container (directly or recursively) of the passed element
242  for (Container *pC = pEl->GetParent(); pC; pC = pC->GetParent())
243  if (pC == this) return true;
244  return false;
245  }

Here is the call graph for this function:

Here is the caller graph for this function:

bool C4GameOptionsList::IsPreGame ( ) const
inline

Definition at line 191 of file C4GameOptions.h.

References GOLS_PreGameNetwork, and GOLS_PreGameSingle.

Referenced by C4GameOptionsList(), and IsTabular().

Here is the caller graph for this function:

bool C4GameOptionsList::IsPreGameSingle ( ) const
inline

Definition at line 192 of file C4GameOptions.h.

References GOLS_PreGameSingle.

bool C4GameOptionsList::IsRuntime ( ) const
inline

Definition at line 189 of file C4GameOptions.h.

References GOLS_Runtime.

Referenced by IsTabular().

Here is the caller graph for this function:

bool C4GUI::ListBox::IsScrollingActive ( )
inlineinherited

Definition at line 1581 of file C4Gui.h.

References C4GUI::ScrollWindow::IsScrollingActive().

Referenced by C4PlayerInfoListBox::Update().

bool IsScrollingActive()
Definition: C4Gui.h:992
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

bool C4GUI::ListBox::IsScrollingNecessary ( )
inlineinherited

Definition at line 1582 of file C4Gui.h.

References C4GUI::ScrollWindow::IsScrollingNecessary().

bool IsScrollingNecessary()
Definition: C4Gui.h:993
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

bool C4GUI::ListBox::IsSelectedChild ( Element pChild)
inlineoverridevirtualinherited

Reimplemented from C4GUI::Container.

Definition at line 1593 of file C4Gui.h.

References C4GUI::Element::IsParentOf().

1593 { return pChild == pSelectedItem || (pSelectedItem && pSelectedItem->IsParentOf(pChild)); }
virtual bool IsParentOf(Element *pEl)
Definition: C4Gui.h:454
Element * pSelectedItem
Definition: C4Gui.h:1510

Here is the call graph for this function:

bool C4GameOptionsList::IsTabular ( ) const
inline

Definition at line 190 of file C4GameOptions.h.

References IsPreGame(), and IsRuntime().

190 { return IsRuntime() || IsPreGame(); } // low lobby space doesn't allow tabular layout
bool IsPreGame() const
bool IsRuntime() const

Here is the call graph for this function:

bool C4GUI::Element::IsVisible ( )
inherited

Definition at line 201 of file C4Gui.cpp.

References C4GUI::Element::fVisible, C4GUI::Element::IsVisible(), and C4GUI::Element::pParent.

Referenced by C4GUI::Dialog::AdvanceFocus(), C4GUI::Screen::CharIn(), C4GUI::ControlKeyDlgCB< TargetClass >::CheckCondition(), C4ScriptGuiWindow::Draw(), C4GUI::Container::Draw(), C4GUI::Window::Draw(), C4GUI::Screen::Draw(), C4ScriptGuiWindow::DrawAll(), C4ScriptGuiWindow::DrawChildren(), C4ChatControl::GetDefaultControl(), C4GUI::Screen::GetFullscreenDialog(), C4GUI::Element::IsVisible(), C4ScriptGuiWindow::IsVisibleTo(), C4GUI::Window::MouseInput(), C4GUI::Control::MouseInput(), C4GUI::Screen::MouseInput(), C4GUI::Container::OnHotkey(), C4ScriptGuiWindow::ProcessMouseInput(), C4Menu::SetPosition(), C4Menu::UpdateElementPositions(), and C4GUI::TextWindow::UpdateSize().

202  {
203  // self and parent must be visible
204  return fVisible && (!pParent || pParent->IsVisible());
205  }
bool IsVisible()
Definition: C4Gui.cpp:201
Container * pParent
Definition: C4Gui.h:376
bool fVisible
Definition: C4Gui.h:383

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Container::MakeLastElement ( Element pChild)
inherited

Definition at line 106 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, C4GUI::Container::pLast, C4GUI::Element::pNext, C4GUI::Element::pParent, and C4GUI::Element::pPrev.

Referenced by C4GUI::Screen::ActivateDialog().

107  {
108  // must be from same container
109  if (pChild->pParent != this) return;
110  // unlink from list
111  if (pChild->pPrev) pChild->pPrev->pNext = pChild->pNext; else pFirst = pChild->pNext;
112  if (pChild->pNext) pChild->pNext->pPrev = pChild->pPrev; else pLast = pChild->pPrev;
113  // readd to front of list
114  if (pLast) pLast->pNext = pChild; else pFirst = pChild;
115  pChild->pPrev = pLast; pChild->pNext = nullptr; pLast = pChild;
116  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Element * pPrev
Definition: C4Gui.h:377
Element * pNext
Definition: C4Gui.h:377

Here is the caller graph for this function:

virtual void C4GUI::Element::MouseEnter ( CMouse rMouse)
inlinevirtualinherited

Reimplemented in C4GUI::ComboBox, C4GUI::ContextButton, C4GUI::CheckBox, C4GUI::Button, C4ScriptGuiWindow, and C4MenuItem.

Definition at line 413 of file C4Gui.h.

Referenced by C4GUI::Button::MouseEnter(), C4GUI::CheckBox::MouseEnter(), C4GUI::ContextButton::MouseEnter(), C4GUI::ComboBox::MouseEnter(), and C4GUI::Screen::MouseInput().

413 {}; // called when mouse cursor enters element region

Here is the caller graph for this function:

void C4GUI::ListBox::MouseInput ( CMouse rMouse,
int32_t  iButton,
int32_t  iX,
int32_t  iY,
DWORD  dwKeyParam 
)
overridevirtualinherited

Reimplemented from C4GUI::Control.

Definition at line 142 of file C4GuiListBox.cpp.

References C4MC_Button_LeftDouble, C4MC_Button_LeftDown, C4Rect::Contains(), C4GUI::BaseCallbackHandler::DoCall(), C4GUI::Element::GetBounds(), C4GUI::Container::GetFirst(), C4GUI::ListBox::GetMarginLeft(), C4GUI::ListBox::GetMarginTop(), C4GUI::Element::GetNext(), C4GUI::ScrollWindow::GetScrollY(), C4GUI::Control::MouseInput(), C4GUI::ListBox::pClientWindow, C4GUI::ListBox::pSelectedItem, C4GUI::ListBox::pSelectionDblClickHandler, and C4GUI::ListBox::SelectionChanged().

143  {
144  // inherited
145  Control::MouseInput(rMouse, iButton, iX, iY, dwKeyParam);
146  // safety
147  if (pClientWindow)
148  {
149  // check list area bounds
150  if (pClientWindow->GetBounds().Contains(iX, iY))
151  // left btn down: select item (regardless of key states)
152  if (iButton == C4MC_Button_LeftDown || iButton == C4MC_Button_LeftDouble)
153  {
154  // reset selection
155  Element *pPrevSelectedItem = pSelectedItem;
156  pSelectedItem = nullptr;
157  // get client component the mouse is over
158  iX -= GetMarginLeft(); iY -= GetMarginTop();
159  iY += pClientWindow->GetScrollY();
160  for (Element *pCurr = pClientWindow->GetFirst(); pCurr; pCurr = pCurr->GetNext())
161  if (pCurr->GetBounds().Contains(iX, iY))
162  pSelectedItem = pCurr;
163  // selection change sound
164  if (pSelectedItem != pPrevSelectedItem) SelectionChanged(true);
165  // item double-clicked? Callback
166  if (iButton == C4MC_Button_LeftDouble && pSelectedItem)
168  }
169  }
170  }
int32_t GetScrollY()
Definition: C4Gui.h:987
virtual void DoCall(class Element *pElement)=0
bool Contains(int32_t iX, int32_t iY) const
Definition: C4Rect.h:40
const int32_t C4MC_Button_LeftDown
int32_t GetMarginLeft() override
Definition: C4Gui.h:1576
BaseCallbackHandler * pSelectionDblClickHandler
Definition: C4Gui.h:1511
void SelectionChanged(bool fByUser)
const int32_t C4MC_Button_LeftDouble
Element * GetFirst()
Definition: C4Gui.h:829
int32_t GetMarginTop() override
Definition: C4Gui.h:1575
C4Rect & GetBounds()
Definition: C4Gui.h:445
Element * pSelectedItem
Definition: C4Gui.h:1510
Element * GetNext() const
Definition: C4Gui.h:449
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

virtual void C4GUI::Element::MouseLeave ( CMouse rMouse)
inlinevirtualinherited

Reimplemented in C4GUI::ComboBox, C4GUI::ContextButton, C4GUI::ContextMenu::Entry, C4GUI::Tabular, C4GUI::CheckBox, C4GUI::Button, C4GUI::ScrollBar, and C4ScriptGuiWindow.

Definition at line 414 of file C4Gui.h.

Referenced by C4GUI::Screen::MouseInput(), C4GUI::ScrollBar::MouseLeave(), C4GUI::Button::MouseLeave(), C4GUI::CheckBox::MouseLeave(), C4GUI::Tabular::MouseLeave(), C4GUI::ContextButton::MouseLeave(), C4GUI::ComboBox::MouseLeave(), C4GUI::CMouse::ReleaseElements(), and C4GUI::CMouse::RemoveElement().

414 {}; // called when mouse cursor leaves element region

Here is the caller graph for this function:

void C4GUI::ListBox::OnGetFocus ( bool  fByMouse)
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Control.

Definition at line 199 of file C4GuiListBox.cpp.

References C4GUI::Container::GetFirstContained(), C4GUI::Control::OnGetFocus(), C4GUI::ListBox::pClientWindow, C4GUI::ListBox::pSelectedItem, and C4GUI::ListBox::SelectionChanged().

200  {
201  // inherited (tooltip)
202  Control::OnGetFocus(fByMouse);
203  // select list item if none is selected (only for keyboard; mouse will select with left-click anyway)
204  if (!pSelectedItem && pClientWindow && !fByMouse)
205  {
207  SelectionChanged(false);
208  }
209  }
void SelectionChanged(bool fByUser)
Element * GetFirstContained() override
Definition: C4Gui.h:773
virtual void OnGetFocus(bool fByMouse)
Definition: C4Gui.h:1056
Element * pSelectedItem
Definition: C4Gui.h:1510
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

bool C4GUI::Container::OnHotkey ( uint32_t  cHotkey)
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Element.

Reimplemented in C4GUI::CheckBox, and C4GUI::Button.

Definition at line 212 of file C4GuiContainers.cpp.

References C4GUI::Element::IsVisible(), C4GUI::Container::pFirst, and C4GUI::Element::pNext.

213  {
214  if (!IsVisible()) return false;
215  // check all nested elements
216  for (Element *pEl = pFirst; pEl; pEl=pEl->pNext)
217  if (pEl->fVisible)
218  if (pEl->OnHotkey(cHotkey)) return true;
219  // no match found
220  return false;
221  }
bool IsVisible()
Definition: C4Gui.cpp:201
Element * pFirst
Definition: C4Gui.h:750
Element * pNext
Definition: C4Gui.h:377

Here is the call graph for this function:

virtual void C4GUI::Control::OnLooseFocus ( )
inlineprotectedvirtualinherited

Reimplemented in C4GUI::RenameEdit, and C4GUI::Edit.

Definition at line 1057 of file C4Gui.h.

Referenced by C4GUI::Edit::OnLooseFocus(), and C4GUI::Dialog::SetFocus().

1057 {}; // callback when control looses focus

Here is the caller graph for this function:

void C4GameOptionsList::OnSec1Timer ( )
inlineoverridevirtual

Implements C4ApplicationSec1Timer.

Definition at line 179 of file C4GameOptions.h.

References Update().

179 { Update(); }

Here is the call graph for this function:

ReverseIterator C4GUI::Container::rbegin ( )
inlineinherited

Definition at line 826 of file C4Gui.h.

Referenced by C4ScriptGuiWindow::MouseInput(), and C4ScriptGuiWindow::ProcessMouseInput().

826 { return ReverseIterator(pLast); }
Element * pLast
Definition: C4Gui.h:750

Here is the caller graph for this function:

void C4GUI::Container::ReaddElement ( Element pChild)
inherited

Definition at line 134 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, C4GUI::Container::pLast, C4GUI::Element::pNext, C4GUI::Element::pParent, and C4GUI::Element::pPrev.

Referenced by C4GUI::ListBox::SortElements().

135  {
136  // safety
137  if (!pChild || pChild->pParent != this) return;
138  // remove from any previous container
139  if (pChild->pPrev) pChild->pPrev->pNext = pChild->pNext; else pFirst = pChild->pNext;
140  if (pChild->pNext) pChild->pNext->pPrev = pChild->pPrev; else pLast = pChild->pPrev;
141  // add to end of list
142  if (pLast) pLast->pNext = pChild; else pFirst = pChild;
143  pChild->pPrev = pLast; pChild->pNext = nullptr; pLast = pChild;
144 
145  assert(pChild->pNext != pChild);
146  assert(pChild->pPrev != pChild);
147  assert(pChild->pParent != pChild);
148  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Element * pPrev
Definition: C4Gui.h:377
Element * pNext
Definition: C4Gui.h:377

Here is the caller graph for this function:

void C4GUI::ListBox::RemoveElement ( Element pChild)
overridevirtualinherited

Reimplemented from C4GUI::Container.

Definition at line 475 of file C4GuiListBox.cpp.

References C4GUI::ListBox::pSelectedItem, C4GUI::Container::RemoveElement(), and C4GUI::ListBox::SelectionChanged().

476  {
477  // inherited
478  Control::RemoveElement(pChild);
479  // clear selection var
480  if (pChild == pSelectedItem)
481  {
482  pSelectedItem = nullptr;
483  SelectionChanged(false);
484  }
485  // position update in AfterElementRemoval
486  }
void SelectionChanged(bool fByUser)
void RemoveElement(Element *pChild) override
Element * pSelectedItem
Definition: C4Gui.h:1510

Here is the call graph for this function:

ReverseIterator C4GUI::Container::rend ( )
inlineinherited

Definition at line 827 of file C4Gui.h.

Referenced by C4ScriptGuiWindow::MouseInput(), and C4ScriptGuiWindow::ProcessMouseInput().

827 { return ReverseIterator(nullptr); }

Here is the caller graph for this function:

void C4GUI::Element::ScreenPos2ClientPos ( int32_t &  riX,
int32_t &  riY 
)
inherited

Definition at line 218 of file C4Gui.cpp.

References C4GUI::Container::ApplyElementOffset(), C4GUI::Element::GetParent(), C4GUI::Element::pParent, C4GUI::Element::rcBounds, C4Rect::x, and C4Rect::y.

Referenced by C4GUI::Screen::MouseInput(), and C4GUI::CMouse::ReleaseElements().

219  {
220  // apply all parent offsets
221  Container *pCont = pParent;
222  while (pCont)
223  {
224  pCont->ApplyElementOffset(riX, riY);
225  pCont = pCont->GetParent();
226  }
227  // apply own offset
228  riX -= rcBounds.x; riY -= rcBounds.y;
229  }
int32_t y
Definition: C4Rect.h:30
virtual void ApplyElementOffset(int32_t &riX, int32_t &riY)
Definition: C4Gui.h:840
C4Rect rcBounds
Definition: C4Gui.h:385
Container * pParent
Definition: C4Gui.h:376
int32_t x
Definition: C4Rect.h:30
friend class Container
Definition: C4Gui.h:472

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::ScrollItemInView ( Element pItem)
inherited

Definition at line 397 of file C4GuiListBox.cpp.

References C4GUI::Element::GetBounds(), C4Rect::Hgt, C4GUI::ListBox::pClientWindow, C4GUI::ScrollWindow::ScrollRangeInView(), and C4Rect::y.

Referenced by C4GUI::ListBox::SelectionChanged().

398  {
399  // safety
400  if (!pItem) return;
401  // scroll covered range into view
402  pClientWindow->ScrollRangeInView(pItem->GetBounds().y, pItem->GetBounds().Hgt);
403  }
void ScrollRangeInView(int32_t iY, int32_t iHgt)
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::ScrollToBottom ( )
inlineinherited

Definition at line 1559 of file C4Gui.h.

References C4GUI::ScrollWindow::ScrollToBottom().

ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

void C4GUI::ListBox::SelectEntry ( Element pNewSel,
bool  fByUser 
)
inherited

Definition at line 590 of file C4GuiListBox.cpp.

References C4GUI::Element::GetParent(), C4GUI::ListBox::pClientWindow, C4GUI::ListBox::pSelectedItem, and C4GUI::ListBox::SelectionChanged().

Referenced by C4GUI::ListBox::CharIn(), C4StartupScenSelDlg::DeleteConfirm(), C4GUI::ListBox::SelectFirstEntry(), C4GUI::ListBox::SelectNone(), and C4StartupPlrSelDlg::SetSelection().

591  {
592  assert(!pNewSel || pNewSel->GetParent() == pClientWindow);
593  if (pSelectedItem == pNewSel) return;
594  pSelectedItem = pNewSel;
595  SelectionChanged(fByUser);
596  }
void SelectionChanged(bool fByUser)
Element * pSelectedItem
Definition: C4Gui.h:1510
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::SelectFirstEntry ( bool  fByUser)
inlineinherited

Definition at line 1584 of file C4Gui.h.

References C4GUI::ListBox::GetFirst(), and C4GUI::ListBox::SelectEntry().

1584 { SelectEntry(GetFirst(), fByUser); }
Element * GetFirst()
Definition: C4Gui.h:1571
void SelectEntry(Element *pNewSel, bool fByUser)

Here is the call graph for this function:

void C4GUI::ListBox::SelectionChanged ( bool  fByUser)
inherited

Definition at line 573 of file C4GuiListBox.cpp.

References C4GUI::BaseCallbackHandler::DoCall(), C4GUI::ListBox::fSelectionDisabled, C4GUI::GUISound(), C4GUI::ListBox::pSelectedItem, C4GUI::ListBox::pSelectionChangeHandler, and C4GUI::ListBox::ScrollItemInView().

Referenced by C4GUI::ListBox::MouseInput(), C4GUI::ListBox::OnGetFocus(), C4GUI::ListBox::RemoveElement(), and C4GUI::ListBox::SelectEntry().

574  {
575  // selections disabled?
576  if (fSelectionDisabled) { pSelectedItem = nullptr; return; }
577  // any selection?
578  if (pSelectedItem)
579  {
580  // effect
581  if (fByUser) GUISound("UI::Select");
582  }
583  // callback (caution: May do periluous things...)
585  // let's hope it wasn't perilous enough to delete this,
586  // because scrolling the item into view must be done AFTER the callback, as the callback might resize
588  }
virtual void DoCall(class Element *pElement)=0
void GUISound(const char *szSound)
Definition: C4Gui.cpp:1175
BaseCallbackHandler * pSelectionChangeHandler
Definition: C4Gui.h:1511
Element * pSelectedItem
Definition: C4Gui.h:1510
void ScrollItemInView(Element *pItem)
bool fSelectionDisabled
Definition: C4Gui.h:1514

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::SelectNone ( bool  fByUser)
inlineinherited

Definition at line 1585 of file C4Gui.h.

References C4GUI::ListBox::SelectEntry().

Referenced by C4StartupScenSelDlg::DoRefresh().

1585 { SelectEntry(nullptr, fByUser); }
void SelectEntry(Element *pNewSel, bool fByUser)

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::SetBounds ( const C4Rect rcNewBound)
inlineinherited

Definition at line 446 of file C4Gui.h.

References C4GUI::Element::UpdatePos(), and C4GUI::Element::UpdateSize().

Referenced by C4GameOptionButtons::C4GameOptionButtons(), C4GoalDisplay::C4GoalDisplay(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupNetListEntry::C4StartupNetListEntry(), C4GUI::ContextButton::ContextButton(), C4GUI::ListBox::ContractToElementHeight(), C4GUI::Control::Control(), C4GUI::Dialog::Dialog(), C4ChatDlg::DoPlacement(), C4StartupNetListEntry::Execute(), C4GUI::FullscreenDialog::FullscreenDialog(), C4GUI::GroupBox::GroupBox(), C4GUI::HorizontalLine::HorizontalLine(), C4GUI::Screen::Init(), C4Menu::InitSize(), C4GUI::LabeledEdit::LabeledEdit(), C4Game::OnResolutionChanged(), C4GameLobby::ScenDesc::ScenDesc(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::ScrollWindow::ScrollWindow(), C4GUI::InputDialog::SetCustomEdit(), C4GUI::Tabular::SetGfx(), C4GoalDisplay::SetGoals(), C4StartupNetListEntry::SetReference(), C4StartupNetListEntry::SetRefQuery(), C4GUI::Tabular::Sheet::Sheet(), C4GUI::TextWindow::TextWindow(), C4ScoreboardDlg::Update(), C4Menu::UpdateElementPositions(), C4GUI::ListBox::UpdateElementPositions(), C4GUI::ScrollWindow::UpdateOwnPos(), C4ChatControl::UpdateSize(), C4ChatDlg::UpdateSize(), C4GUI::TextWindow::UpdateSize(), and C4GUI::Dialog::UpdateSize().

446 { rcBounds=rcNewBound; UpdatePos(); UpdateSize(); }
virtual void UpdateSize()
Definition: C4Gui.cpp:185
C4Rect rcBounds
Definition: C4Gui.h:385
virtual void UpdatePos()
Definition: C4Gui.cpp:193

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::SetContextHandler ( ContextHandler pNewHd)
inlineinherited

Definition at line 465 of file C4Gui.h.

References C4GUI::ContextHandler::DeRef(), C4GUI::Element::pContextHandler, and C4GUI::ContextHandler::Ref().

Referenced by C4StartupMainDlg::C4StartupMainDlg(), C4GUI::ContextButton::ContextButton(), and C4GUI::Edit::Edit().

466  {
468  if ((pContextHandler = pNewHd)) pNewHd->Ref();
469  }
ContextHandler * pContextHandler
Definition: C4Gui.h:381

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::SetDecoration ( bool  fDrawBG,
ScrollBarFacets pToGfx,
bool  fAutoScroll,
bool  fDrawBorder = false 
)
inlineinherited

Definition at line 1566 of file C4Gui.h.

References C4GUI::ListBox::fDrawBorder, and C4GUI::ScrollWindow::SetDecoration().

Referenced by C4GameOverDlg::C4GameOverDlg(), C4Network2ClientListDlg::C4Network2ClientListDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), and C4StartupScenSelDlg::C4StartupScenSelDlg().

1567  { fDrawBackground=fDrawBG; this->fDrawBorder=fDrawBorder; if (pClientWindow) pClientWindow->SetDecoration(pToGfx, fAutoScroll); }
void SetDecoration(ScrollBarFacets *pToGfx, bool fAutoScroll)
Definition: C4Gui.h:977
bool fDrawBorder
Definition: C4Gui.h:1513
bool fDrawBackground
Definition: C4Gui.h:1512
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::SetDragTarget ( Window pToWindow)
inlineinherited

Definition at line 464 of file C4Gui.h.

References C4GUI::Element::pDragTarget.

Referenced by C4GUI::Dialog::SetTitle().

464 { pDragTarget = pToWindow; }
Window * pDragTarget
Definition: C4Gui.h:378

Here is the caller graph for this function:

void C4GameOptionsList::SetParameters ( C4ScenarioParameterDefs param_defs,
C4ScenarioParameters params 
)

Definition at line 381 of file C4GameOptions.cpp.

382 {
383  // update to new parameter set
384  ClearOptions();
385  this->param_defs = param_defs;
386  this->params = params;
387  InitOptions();
388 }
void C4GUI::Window::SetPos ( int32_t  iXPos,
int32_t  iYPos 
)
inlineinherited

Definition at line 860 of file C4Gui.h.

References C4GUI::Element::rcBounds, C4GUI::Element::UpdatePos(), C4Rect::x, and C4Rect::y.

Referenced by C4ScoreboardDlg::DoPlacement(), C4Menu::InitLocation(), C4StartupPlrSelDlg::OnNewBtn(), C4StartupPlrSelDlg::OnPropertyBtn(), C4Menu::SetLocation(), and C4GUI::Screen::ShowDialog().

861  { rcBounds.x=iXPos; rcBounds.y=iYPos; UpdatePos(); }
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
virtual void UpdatePos()
Definition: C4Gui.cpp:193

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::SetSelectionChangeCallbackFn ( BaseCallbackHandler pToHandler)
inlineinherited

Definition at line 1548 of file C4Gui.h.

References C4GUI::BaseCallbackHandler::DeRef(), and C4GUI::BaseCallbackHandler::Ref().

Referenced by C4PlayerInfoListBox::C4PlayerInfoListBox(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), and C4FileSelDlg::InitElements().

1549  {
1551  if ((pSelectionChangeHandler = pToHandler)) pToHandler->Ref();
1552  }
BaseCallbackHandler * pSelectionChangeHandler
Definition: C4Gui.h:1511

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::SetSelectionDblClickFn ( BaseCallbackHandler pToHandler)
inlineinherited

Definition at line 1553 of file C4Gui.h.

References C4GUI::BaseCallbackHandler::DeRef(), and C4GUI::BaseCallbackHandler::Ref().

Referenced by C4StartupNetDlg::C4StartupNetDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), and C4FileSelDlg::InitElements().

1554  {
1557  }
BaseCallbackHandler * pSelectionDblClickHandler
Definition: C4Gui.h:1511

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::SetSelectionDiabled ( bool  fToVal = true)
inlineinherited

Definition at line 1568 of file C4Gui.h.

Referenced by C4GameOverDlg::C4GameOverDlg(), and C4Network2ClientListDlg::C4Network2ClientListDlg().

1568 { fSelectionDisabled = fToVal; }
bool fSelectionDisabled
Definition: C4Gui.h:1514

Here is the caller graph for this function:

void C4GUI::Element::SetToolTip ( const char *  szNewTooltip,
bool  is_immediate = false 
)
inherited

Definition at line 409 of file C4Gui.cpp.

References StdStrBuf::Clear(), and StdStrBuf::Copy().

Referenced by C4GUI::ContextMenu::AddItem(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4MenuItem::C4MenuItem(), C4StartupMainDlg::C4StartupMainDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupOptionsDlg::C4StartupOptionsDlg(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::InfoDialog::CreateSubComponents(), C4GUI::FullscreenDialog::FullscreenDialog(), C4GUI::IconButton::IconButton(), C4GUI::InputDialog::InputDialog(), C4GameLobby::MainDlg::MainDlg(), C4GUI::ProgressDialog::ProgressDialog(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::InputDialog::SetCustomEdit(), C4GUI::Dialog::SetTitle(), C4GUI::FullscreenDialog::SetTitle(), C4ChatControl::ChatSheet::NickItem::Update(), and C4GameLobby::MainDlg::UpdateRightTab().

410  {
411  // store tooltip
412  if (szNewTooltip) ToolTip.Copy(szNewTooltip); else ToolTip.Clear();
413  // store immediate flag
414  is_immediate_tooltip = is_immediate;
415  }
void Clear()
Definition: StdBuf.h:466
void Copy()
Definition: StdBuf.h:467

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Container::SetVisibility ( bool  fToValue)
overridevirtualinherited

Reimplemented from C4GUI::Element.

Reimplemented in C4StartupNetListEntry.

Definition at line 247 of file C4GuiContainers.cpp.

References C4GUI::Element::GetDlg(), C4GUI::Dialog::GetFocus(), C4GUI::Container::IsParentOf(), C4GUI::Dialog::SetFocus(), and C4GUI::Element::SetVisibility().

Referenced by C4GUI::Tabular::AddCustomSheet(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4Menu::C4Menu(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4Menu::Draw(), C4Menu::InitLocation(), and C4StartupNetListEntry::SetVisibility().

248  {
249  // inherited
250  Element::SetVisibility(fToValue);
251  // remove focus from contained elements
252  if (!fToValue)
253  {
254  Dialog *pDlg = GetDlg();
255  if (pDlg)
256  {
257  Control *pFocus = pDlg->GetFocus();
258  if (pFocus)
259  {
260  if (IsParentOf(pFocus))
261  {
262  pDlg->SetFocus(nullptr, false);
263  }
264  }
265  }
266  }
267  }
bool IsParentOf(Element *pEl) override
virtual void SetVisibility(bool fToValue)
Definition: C4Gui.cpp:207
C4GameControl Control
virtual class Dialog * GetDlg()
Definition: C4Gui.cpp:288

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::SortElements ( SortFunction  SortFunc,
void *  par 
)
inherited

Definition at line 635 of file C4GuiListBox.cpp.

References C4GUI::Container::GetElementCount(), C4GUI::Container::GetFirst(), C4GUI::Element::GetNext(), C4GUI::ListBox::pClientWindow, C4GUI::Container::ReaddElement(), and C4GUI::ListBox::UpdateElementPositions().

636  {
637  // sort list items:
638  // create an array of all list items, sort it, and reorder them afterwards
639  if (!pClientWindow) return;
640  int32_t iElemCount = pClientWindow->GetElementCount();
641  if (iElemCount <= 1) return;
642  Element **ppElements = new Element *[iElemCount];
643  try
644  {
645  int32_t i=0;
646  for (Element *pEl = pClientWindow->GetFirst(); pEl; pEl = pEl->GetNext())
647  ppElements[i++] = pEl;
648  std::sort(ppElements, ppElements+iElemCount, SortCompareElements(SortFunc, par));
649  for (i=0; i<iElemCount; ++i)
650  pClientWindow->ReaddElement(ppElements[i]);
651  }
652  catch (...)
653  {
654  delete [] ppElements;
655  throw;
656  }
657  delete [] ppElements;
659  }
void ReaddElement(Element *pChild)
void UpdateElementPositions()
Element * GetFirst()
Definition: C4Gui.h:829
Element * GetNext() const
Definition: C4Gui.h:449
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

void C4GUI::Element::StartDragging ( CMouse rMouse,
int32_t  iX,
int32_t  iY,
DWORD  dwKeyParam 
)
virtualinherited

Definition at line 259 of file C4Gui.cpp.

References C4GUI::Element::fDragging, C4GUI::Element::iDragX, C4GUI::Element::iDragY, and C4GUI::CMouse::pDragElement.

Referenced by C4MenuItem::MouseInput(), and C4GUI::Element::MouseInput().

260  {
261  // set flag
262  fDragging = true;
263  // set drag start pos
264  iDragX = iX; iDragY = iY;
265  // mark drag in mouse
266  rMouse.pDragElement = this;
267  }
int32_t iDragY
Definition: C4Gui.h:379
bool fDragging
Definition: C4Gui.h:380
int32_t iDragX
Definition: C4Gui.h:379

Here is the caller graph for this function:

void C4GUI::Element::StopDragging ( CMouse rMouse,
int32_t  iX,
int32_t  iY,
DWORD  dwKeyParam 
)
virtualinherited

Definition at line 282 of file C4Gui.cpp.

References C4GUI::Element::DoDragging().

Referenced by C4GUI::Screen::MouseInput(), and C4GUI::CMouse::ReleaseElements().

283  {
284  // move element pos
285  DoDragging(rMouse, iX, iY, dwKeyParam);
286  }
virtual void DoDragging(CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
Definition: C4Gui.cpp:269

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::UnFreezeScrolling ( )
inlineinherited

Definition at line 1563 of file C4Gui.h.

References C4GUI::ScrollWindow::UnFreeze().

1563 { pClientWindow->UnFreeze(); }
void UnFreeze()
Definition: C4Gui.h:970
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

void C4GameOptionsList::Update ( )

Definition at line 360 of file C4GameOptions.cpp.

References C4GUI::Container::GetFirst(), and C4GUI::ListBox::pClientWindow.

Referenced by Activate(), C4GameLobby::MainDlg::HandlePacket(), C4StartupScenSelDlg::OnLeagueOptionChanged(), and OnSec1Timer().

361 {
362  // update all option items
363  for (Option *pItem = static_cast<Option *>(pClientWindow->GetFirst()); pItem; pItem = pItem->GetNext())
364  pItem->Update();
365 }
Element * GetFirst()
Definition: C4Gui.h:829
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::UpdateColumnCount ( )
protectedinherited

Definition at line 172 of file C4GuiListBox.cpp.

References C4GUI::Window::GetClientRect(), C4GUI::ListBox::iColCount, C4GUI::ListBox::iMultiColItemWidth, C4GUI::ListBox::pClientWindow, and C4Rect::Wdt.

Referenced by C4GUI::ListBox::ElementSizeChanged(), and C4GUI::ListBox::ListBox().

173  {
175  {
176  // multicoloumn-listbox
177  iColCount = std::max<int32_t>(pClientWindow->GetClientRect().Wdt / iMultiColItemWidth, 1);
178  }
179  else
180  {
181  // regular 1-col-listbox
182  iColCount = 1;
183  }
184  }
int32_t iMultiColItemWidth
Definition: C4Gui.h:1507
int32_t Wdt
Definition: C4Rect.h:30
C4Rect & GetClientRect() override
Definition: C4Gui.h:864
int32_t iColCount
Definition: C4Gui.h:1508
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::UpdateElementPosition ( Element pOfElement,
int32_t  iIndent 
)
inherited

Definition at line 464 of file C4GuiListBox.cpp.

References C4GUI::Element::GetBounds(), C4GUI::ListBox::GetItemWidth(), C4GUI::ListBox::UpdateElementPositions(), C4GUI::Element::UpdateOwnPos(), C4Rect::Wdt, and C4Rect::x.

465  {
466  // resize it
467  C4Rect &rcChildBounds = pOfElement->GetBounds();
468  rcChildBounds.x = iIndent;
469  rcChildBounds.Wdt = GetItemWidth() - iIndent ;
470  pOfElement->UpdateOwnPos();
471  // re-stack elements
473  }
void UpdateElementPositions()
Definition: C4Rect.h:27
int32_t Wdt
Definition: C4Rect.h:30
int32_t x
Definition: C4Rect.h:30
int32_t GetItemWidth()
Definition: C4Gui.h:1545

Here is the call graph for this function:

void C4GUI::ListBox::UpdateElementPositions ( )
inherited

Definition at line 405 of file C4GuiListBox.cpp.

References C4GUI::Element::fVisible, C4GUI::Element::GetBounds(), C4GUI::Container::GetFirst(), C4GUI::Element::GetListItemTopSpacing(), C4GUI::Element::GetNext(), C4Rect::Hgt, C4GUI::ListBox::iColCount, C4GUI::ListBox::iMultiColItemWidth, C4GUI::ListBox::pClientWindow, C4GUI::Element::SetBounds(), C4GUI::ScrollWindow::SetClientHeight(), C4GUI::Element::UpdateOwnPos(), C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4GUI::ListBox::AfterElementRemoval(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4GUI::ListBox::ElementPosChanged(), C4GUI::ListBox::ElementSizeChanged(), C4GUI::ListBox::InsertElement(), C4GUI::ListBox::SortElements(), C4GUI::ListBox::UpdateElementPosition(), and C4GUI::ListBox::UpdateSize().

406  {
407  // safety
408  if (!pClientWindow) return;
409  // first item at zero offset
410  Element *pCurr = pClientWindow->GetFirst();
411  int iOverallHgt;
412  if (pCurr)
413  {
414  if (!iMultiColItemWidth)
415  {
416  // Single column box: All stacked vertically
417  if (pCurr->GetBounds().y)
418  {
419  pCurr->GetBounds().y = 0;
420  pCurr->UpdateOwnPos();
421  }
422  if(pCurr->fVisible) iOverallHgt = pCurr->GetBounds().Hgt;
423  else iOverallHgt = 0;
424  // others stacked under it
425  while ((pCurr = pCurr->GetNext()))
426  {
427  if(!pCurr->fVisible) continue; //Do not reserve space for hidden elements
428  int32_t iYSpace = pCurr->GetListItemTopSpacing();
429  int32_t iNewY = iOverallHgt + iYSpace;
430  iOverallHgt += pCurr->GetBounds().Hgt + iYSpace;
431  if (iNewY != pCurr->GetBounds().y)
432  {
433  pCurr->GetBounds().y = iNewY;
434  pCurr->UpdateOwnPos();
435  }
436  }
437  }
438  else
439  {
440  // Multi column box: Keep element size; reposition horizontally+vertically
441  int32_t y=0, iLineHgt=0, col=0;
442  for (; pCurr; pCurr=pCurr->GetNext())
443  {
444  const C4Rect &rcCurrBounds = pCurr->GetBounds();
445  iLineHgt = std::max<int32_t>(rcCurrBounds.Hgt, iLineHgt);
446  int32_t x = col * iMultiColItemWidth;
447  if (rcCurrBounds.x != x || rcCurrBounds.y != y || rcCurrBounds.Wdt != iMultiColItemWidth)
448  pCurr->SetBounds(C4Rect(x,y,iMultiColItemWidth,rcCurrBounds.Hgt));
449  if (++col >= iColCount)
450  {
451  col = 0;
452  y += iLineHgt;
453  }
454  }
455  iOverallHgt = y + iLineHgt;
456  }
457  }
458  else
459  iOverallHgt = 0;
460  // update scrolling
461  pClientWindow->SetClientHeight(iOverallHgt);
462  }
Definition: C4Rect.h:27
int32_t iMultiColItemWidth
Definition: C4Gui.h:1507
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
Element * GetFirst()
Definition: C4Gui.h:829
C4Rect & GetBounds()
Definition: C4Gui.h:445
int32_t x
Definition: C4Rect.h:30
int32_t iColCount
Definition: C4Gui.h:1508
void SetClientHeight(int32_t iToHgt)
Definition: C4Gui.h:973
int32_t Hgt
Definition: C4Rect.h:30
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Window::UpdateOwnPos ( )
overridevirtualinherited

Reimplemented from C4GUI::Element.

Reimplemented in C4GUI::FullscreenDialog, C4GUI::CheckBox, C4GUI::ScrollWindow, C4StartupScenSelDlg::ScenListItem, and C4Menu.

Definition at line 324 of file C4GuiContainers.cpp.

References C4GUI::Window::GetMarginBottom(), C4GUI::Window::GetMarginLeft(), C4GUI::Window::GetMarginRight(), C4GUI::Window::GetMarginTop(), C4Rect::Hgt, C4GUI::Element::rcBounds, C4GUI::Window::rcClientRect, C4Rect::Set(), C4GUI::Element::UpdateOwnPos(), C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4GameOverDlg::C4GameOverDlg(), C4GUI::Edit::Edit(), C4GUI::ListBox::ListBox(), C4GUI::Dialog::SetFrameDeco(), C4GUI::GroupBox::SetMargin(), C4GUI::Tabular::SetSheetMargin(), C4GUI::GroupBox::SetTitle(), C4GUI::Tabular::Tabular(), C4GUI::TextWindow::TextWindow(), C4FileSelDlg::DefaultListItem::UpdateOwnPos(), C4GUI::FullscreenDialog::UpdateOwnPos(), and C4GUI::Window::Window().

325  {
327  // set client rect
328  int32_t iMarginL=GetMarginLeft(), iMarginT=GetMarginTop();
329  rcClientRect.Set(rcBounds.x + iMarginL, rcBounds.y + iMarginT, std::max<int32_t>(rcBounds.Wdt - iMarginL - GetMarginRight(), 0), std::max<int32_t>(rcBounds.Hgt - iMarginT - GetMarginBottom(), 0));
330  }
C4Rect rcClientRect
Definition: C4Gui.h:851
virtual int32_t GetMarginTop()
Definition: C4Gui.h:873
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
virtual int32_t GetMarginRight()
Definition: C4Gui.h:875
virtual int32_t GetMarginLeft()
Definition: C4Gui.h:874
int32_t x
Definition: C4Rect.h:30
void Set(int32_t iX, int32_t iY, int32_t iWdt, int32_t iHgt)
Definition: C4Rect.cpp:86
virtual void UpdateOwnPos()
Definition: C4Gui.h:434
int32_t Hgt
Definition: C4Rect.h:30
virtual int32_t GetMarginBottom()
Definition: C4Gui.h:876

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::Element::UpdatePos ( )
protectedvirtualinherited

Reimplemented in C4GUI::Dialog.

Definition at line 193 of file C4Gui.cpp.

References C4GUI::Container::ElementPosChanged(), C4GUI::Element::pParent, and C4GUI::Element::UpdateOwnPos().

Referenced by C4GUI::Element::DoDragging(), C4GUI::ContextMenu::Open(), C4GUI::ProgressBar::ProgressBar(), C4GUI::Element::SetBounds(), C4GUI::Window::SetPos(), and C4GUI::Dialog::UpdatePos().

194  {
195  // update own fields
196  UpdateOwnPos();
197  // notify container
198  if (pParent) pParent->ElementPosChanged(this);
199  }
Container * pParent
Definition: C4Gui.h:376
virtual void ElementPosChanged(Element *pOfElement)
Definition: C4Gui.h:754
virtual void UpdateOwnPos()
Definition: C4Gui.h:434

Here is the call graph for this function:

Here is the caller graph for this function:

void C4GUI::ListBox::UpdateSize ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 1591 of file C4Gui.h.

References C4GUI::ListBox::UpdateElementPositions(), and C4GUI::Element::UpdateSize().

void UpdateElementPositions()
virtual void UpdateSize()
Definition: C4Gui.cpp:185
ScrollWindow * pClientWindow
Definition: C4Gui.h:1509

Here is the call graph for this function:

Member Data Documentation

bool C4GUI::Element::fDragging {false}
protectedinherited

Definition at line 380 of file C4Gui.h.

Referenced by C4GUI::Element::StartDragging().

bool C4GUI::ListBox::fDrawBackground
protectedinherited

Definition at line 1512 of file C4Gui.h.

Referenced by C4GUI::ListBox::DrawElement().

bool C4GUI::ListBox::fDrawBorder
protectedinherited

Definition at line 1513 of file C4Gui.h.

Referenced by C4GUI::ListBox::DrawElement(), and C4GUI::ListBox::SetDecoration().

bool C4GUI::ListBox::fSelectionDisabled
protectedinherited

Definition at line 1514 of file C4Gui.h.

Referenced by C4GUI::ListBox::SelectionChanged().

int32_t C4GUI::ListBox::iColCount
protectedinherited
int32_t C4GUI::Element::iDragX
protectedinherited

Definition at line 379 of file C4Gui.h.

Referenced by C4GUI::Element::DoDragging(), and C4GUI::Element::StartDragging().

int32_t C4GUI::Element::iDragY
protectedinherited

Definition at line 379 of file C4Gui.h.

Referenced by C4GUI::Element::DoDragging(), and C4GUI::Element::StartDragging().

int32_t C4GUI::ListBox::iMultiColItemWidth
protectedinherited
ContextHandler* C4GUI::Element::pContextHandler {nullptr}
protectedinherited
Window* C4GUI::Element::pDragTarget {nullptr}
protectedinherited
BaseCallbackHandler* C4GUI::ListBox::pSelectionChangeHandler
protectedinherited

Definition at line 1511 of file C4Gui.h.

Referenced by C4GUI::ListBox::SelectionChanged(), and C4GUI::ListBox::~ListBox().

BaseCallbackHandler * C4GUI::ListBox::pSelectionDblClickHandler
protectedinherited

Definition at line 1511 of file C4Gui.h.

Referenced by C4GUI::ListBox::MouseInput(), and C4GUI::ListBox::~ListBox().

C4Rect C4GUI::Element::rcBounds
protectedinherited

Definition at line 385 of file C4Gui.h.

Referenced by C4Chart::C4Chart(), C4StartupMainDlg::C4StartupMainDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::Element::ClientPos2ScreenPos(), C4GUI::ContextMenu::ContextMenu(), C4GUI::Dialog::CreateConsoleWindow(), C4GUI::ContextMenu::CtxMouseInput(), C4FileSelDlg::DefaultListItem::DefaultListItem(), C4GUI::Element::DoContext(), C4GUI::Element::DoDragging(), C4ScoreboardDlg::DoPlacement(), C4ScriptGuiWindow::Draw(), C4GUI::Element::Draw3DFrame(), C4GUI::Element::DrawBar(), C4ScriptGuiWindow::DrawChildren(), C4StartupMainDlg::DrawElement(), C4MenuItem::DrawElement(), C4StartupNetListEntry::DrawElement(), C4Chart::DrawElement(), C4StartupPlrPropertiesDlg::DrawElement(), C4Menu::DrawElement(), C4GUI::Label::DrawElement(), C4GUI::WoodenLabel::DrawElement(), C4GUI::MultilineLabel::DrawElement(), C4GUI::ProgressBar::DrawElement(), C4GUI::HorizontalLine::DrawElement(), C4GUI::Picture::DrawElement(), C4GUI::OverlayPicture::DrawElement(), C4GUI::ScrollBar::DrawElement(), C4GUI::GroupBox::DrawElement(), C4GUI::PaintBox::DrawElement(), C4GUI::Button::DrawElement(), C4GUI::IconButton::DrawElement(), C4GUI::ArrowButton::DrawElement(), C4GUI::FacetButton::DrawElement(), C4GUI::Edit::DrawElement(), C4GUI::CheckBox::DrawElement(), C4GUI::ListBox::DrawElement(), C4GUI::Tabular::DrawElement(), C4GUI::TextWindow::DrawElement(), C4GUI::ContextMenu::Entry::DrawElement(), C4GUI::ContextMenu::DrawElement(), C4GUI::ContextButton::DrawElement(), C4GUI::ComboBox::DrawElement(), C4GUI::Element::DrawHBarByVGfx(), C4GUI::Element::DrawHVBar(), C4GUI::Element::DrawVBar(), C4GUI::Element::Element(), C4GUI::ContextMenu::Entry::Entry(), C4GUI::Element::GetBounds(), C4GUI::Element::GetClientRect(), C4ScriptGuiWindow::GetClippingRect(), C4GUI::WoodenLabel::GetLeftIndent(), C4GUI::Tabular::GetMarginBottom(), C4GUI::Tabular::GetMarginLeft(), C4GUI::Tabular::GetMarginRight(), C4StartupPlrSelDlg::GetMarginTop(), C4StartupScenSelDlg::GetMarginTop(), C4GUI::Tabular::GetMarginTop(), C4GUI::ScrollBar::HasPin(), C4Menu::InitLocation(), C4Menu::InitSize(), C4GUI::ScrollWindow::IsScrollingNecessary(), C4GUI::Label::Label(), C4ScriptGuiWindow::MouseInput(), C4GUI::Window::MouseInput(), C4GUI::CheckBox::MouseInput(), C4GUI::Tabular::MouseInput(), C4GUI::ContextMenu::MouseInput(), C4GUI::Screen::MouseInput(), C4GUI::MultilineLabel::MultilineLabel(), C4ChatControl::ChatSheet::NickItem::NickItem(), C4ScriptGuiWindow::OnMouseIn(), C4GUI::ContextMenu::Open(), C4GUI::Picture::Picture(), C4ScriptGuiWindow::ProcessMouseInput(), C4GUI::ProgressBar::ProgressBar(), C4GUI::Screen::Render(), C4GUI::Element::ScreenPos2ClientPos(), C4GUI::ScrollBar::ScrollBar(), C4GUI::Tabular::SetGfx(), C4GUI::Window::SetPos(), C4GUI::Label::SetText(), C4GUI::Label::SetX0(), C4ScoreboardDlg::Update(), C4GUI::ScrollWindow::Update(), C4GUI::MultilineLabel::UpdateHeight(), C4ScriptGuiWindow::UpdateLayout(), C4ScriptGuiWindow::UpdateLayoutGrid(), C4ScriptGuiWindow::UpdateLayoutTightGrid(), C4ScriptGuiWindow::UpdateLayoutVertical(), C4GUI::Label::UpdateOwnPos(), C4GUI::Window::UpdateOwnPos(), C4GUI::MultilineLabel::UpdateSize(), and C4GUI::WoodenLabel::WoodenLabel().


The documentation for this class was generated from the following files: