JX Application Framework
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Friends | List of all members
JXWindow Class Reference

#include <JXWindow.h>

Inheritance diagram for JXWindow:
[legend]

Classes

class  Deiconified
 
class  Docked
 
class  Iconified
 
class  Mapped
 
class  MinSizeChanged
 
class  Raised
 
class  TitleChanged
 
class  Undocked
 
class  Unmapped
 

Public Types

enum  CloseAction {
  kDeactivateDirector ,
  kCloseDirector ,
  kCloseDisplay ,
  kQuitApp
}
 
enum  WMType {
  kWMNormalType = 1 ,
  kWMDialogType ,
  kWMPulldownMenuType ,
  kWMPopupMenuType ,
  kWMTooltipType
}
 

Public Member Functions

 JXWindow (JXWindowDirector *director, const JCoordinate w, const JCoordinate h, const JString &title, const bool isOverlay=false)
 
 ~JXWindow () override
 
JXDisplayGetDisplay () const
 
const JStringGetTitle () const
 
void SetTitle (const JString &title)
 
bool Close ()
 
CloseAction GetCloseAction () const
 
void SetCloseAction (const CloseAction closeAction)
 
void SetTransientFor (const JXWindowDirector *director)
 
void SetWMClass (const JUtf8Byte *c_class, const JUtf8Byte *instance)
 
void HideFromTaskbar ()
 
void Show () override
 
void Hide () override
 
void Raise (const bool grabKeyboardFocus=true)
 
void Lower ()
 
void Refresh () const override
 
void RefreshRect (const JRect &rect) const
 
void Redraw () const override
 
void RedrawRect (const JRect &rect) const
 
void CheckForMapOrExpose ()
 
void Iconify ()
 
void Deiconify ()
 
bool IsIconified () const
 
bool GetFocusWidget (JXWidget **widget) const
 
bool SwitchFocusToFirstWidget ()
 
bool SwitchFocusToFirstWidgetWithAncestor (JXContainer *ancestor)
 
bool OKToUnfocusCurrentWidget () const
 
bool UnfocusCurrentWidget ()
 
void KillFocus ()
 
void Activate () override
 
void Resume () override
 
bool WillFocusWhenShown () const
 
void ShouldFocusWhenShow (const bool focusWhenShow)
 
void RequestFocus ()
 
bool HasFocus () const
 
JPoint GlobalToLocal (const JCoordinate x, const JCoordinate y) const override
 
JPoint LocalToGlobal (const JCoordinate x, const JCoordinate y) const override
 
JPoint GlobalToRoot (const JCoordinate x, const JCoordinate y) const
 
JPoint GlobalToRoot (const JPoint &pt) const
 
JRect GlobalToRoot (const JRect &r) const
 
JPoint RootToGlobal (const JCoordinate x, const JCoordinate y) const
 
JPoint RootToGlobal (const JPoint &pt) const
 
JRect RootToGlobal (const JRect &r) const
 
void Place (const JCoordinate enclX, const JCoordinate enclY) override
 
void Move (const JCoordinate dx, const JCoordinate dy) override
 
void SetSize (const JCoordinate w, const JCoordinate h) override
 
void AdjustSize (const JCoordinate dw, const JCoordinate dh) override
 
void CenterOnScreen ()
 
void PlaceAsDialogWindow ()
 
JPoint GetMinSize () const
 
void SetMinSize (const JCoordinate w, const JCoordinate h)
 
void LockCurrentMinSize ()
 
void ClearMinSize ()
 
JPoint GetMaxSize () const
 
void SetMaxSize (const JCoordinate w, const JCoordinate h)
 
void LockCurrentMaxSize ()
 
void ClearMaxSize ()
 
void LockCurrentSize ()
 
void SetStepSize (const JCoordinate dw, const JCoordinate dh)
 
void ClearStepSize ()
 
JRect GetBoundsGlobal () const override
 
JRect GetFrameGlobal () const override
 
JRect GetApertureGlobal () const override
 
JPoint GetDesktopLocation () const
 
void ReadGeometry (std::istream &input, const bool skipDocking=false)
 
void WriteGeometry (std::ostream &output) const
 
void ReadGeometry (const JString &data, const bool skipDocking=false)
 
void WriteGeometry (JString *data) const
 
JXWindowDirectorGetDirector () const
 
JColorID GetBackColor () const
 
void SetBackColor (const JColorID color)
 
void SetIcon (JXImage *icon)
 
JXWindowIconSetIcon (JXImage *normalIcon, JXImage *dropIcon)
 
bool GetIconWidget (JXWindowIcon **widget) const
 
bool IsDragging () const
 
void PrintWindowConfig ()
 
void SetWMWindowType (const WMType type)
 
void BufferDrawing (const bool bufferDrawing)
 
bool IsKeepingBufferPixmap () const
 
void KeepBufferPixmap (const bool keepIt)
 
bool IsUsingPixmapAsBackground () const
 
void UsePixmapAsBackground (const bool useIt)
 
bool GrabPointer (JXContainer *obj)
 
void UngrabPointer (JXContainer *obj)
 
void HandleEvent (const XEvent &xEvent)
 
void Update ()
 
void DispatchMouse ()
 
bool BeginDrag (JXContainer *obj, const JPoint &ptG, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers)
 
void EndDrag (JXContainer *obj, const JPoint &ptG, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers)
 
bool GetRootChild (Window *rootChild) const
 
void AcceptSaveYourself (const bool accept)
 
bool GetMouseContainer (JXContainer **window) const
 
void SetMouseContainer (JXContainer *obj, const JPoint &ptG, const unsigned int state)
 
void RecalcMouseContainer ()
 
void SetWantDrag (const bool wantDrag)
 
JSize CountClicks (JXContainer *container, const JPoint &pt)
 
void DispatchCursor ()
 
void DisplayXCursor (const JCursorIndex index)
 
void UpdateForScroll (const JRect &ap, const JRect &src, const JRect &dest)
 
void RegisterFocusWidget (JXWidget *widget)
 
void UnregisterFocusWidget (JXWidget *widget)
 
bool SwitchFocusToWidget (JXWidget *widget)
 
bool InstallShortcut (JXWidget *widget, const int key, const JXKeyModifiers &modifiers)
 
void InstallShortcuts (JXWidget *widget, const JString &list)
 
void ClearShortcuts (JXWidget *widget)
 
Window GetXWindow () const
 
bool InstallMenuShortcut (JXTextMenu *menu, const JIndex menuItem, const int key, const JXKeyModifiers &origModifiers)
 
void ClearMenuShortcut (JXTextMenu *menu, const JIndex menuItem)
 
void ClearAllMenuShortcuts (JXTextMenu *menu)
 
void MenuItemInserted (JXTextMenu *menu, const JIndex newItem)
 
void MenuItemRemoved (JXTextMenu *menu, const JIndex oldItem)
 
void SetXIMPosition (const JPoint &ptG)
 
void SetCurrentHintManager (JXHintManager *mgr)
 
void DeactivateHint ()
 
bool IsDocked () const
 
bool GetDockWindow (JXWindow **window) const
 
bool GetDockWidget (JXDockWidget **dock) const
 
bool Dock (JXDockWidget *dock, const Window parent, const JRect &geom)
 
void Undock ()
 
void UndockAllChildWindows ()
 
bool HasWindowType () const
 
bool GetWindowType (JString *type) const
 
void UndockedPlace (const JCoordinate enclX, const JCoordinate enclY)
 
void UndockedMove (const JCoordinate dx, const JCoordinate dy)
 
void UndockedSetSize (const JCoordinate w, const JCoordinate h, const bool ftc=false)
 
virtual JPoint GlobalToLocal (const JCoordinate x, const JCoordinate y) const=0
 
JPoint GlobalToLocal (const JPoint &pt) const
 
JRect GlobalToLocal (const JRect &r) const
 
virtual JPoint LocalToGlobal (const JCoordinate x, const JCoordinate y) const=0
 
JPoint LocalToGlobal (const JPoint &pt) const
 
JRect LocalToGlobal (const JRect &r) const
 
- Public Member Functions inherited from JXContainer
 ~JXContainer () override
 
bool IsAncestor (JXContainer *obj) const
 
bool IsVisible () const
 
void SetVisible (const bool vis)
 
bool WouldBeVisible () const
 
virtual void Deactivate ()
 
bool IsActive () const
 
void SetActive (const bool active)
 
bool WouldBeActive () const
 
virtual void Suspend ()
 
bool IsSuspended () const
 
bool IsDNDSource () const
 
bool IsDNDTarget () const
 
JPoint GlobalToLocal (const JPoint &pt) const
 
JRect GlobalToLocal (const JRect &r) const
 
JPoint LocalToGlobal (const JPoint &pt) const
 
JRect LocalToGlobal (const JRect &r) const
 
JRect GetBounds () const
 
JCoordinate GetBoundsWidth () const
 
JCoordinate GetBoundsHeight () const
 
JRect GetFrame () const
 
JRect GetFrameLocal () const
 
JCoordinate GetFrameWidth () const
 
JCoordinate GetFrameHeight () const
 
JRect GetAperture () const
 
JCoordinate GetApertureWidth () const
 
JCoordinate GetApertureHeight () const
 
JXDisplayGetDisplay () const
 
JXWindowGetWindow () const
 
JXContainerGetEnclosure () const
 
JFontManagerGetFontManager () const
 
JXFontManagerGetXFontManager () const
 
JXSelectionManagerGetSelectionManager () const
 
JXDNDManagerGetDNDManager () const
 
JXMenuManagerGetMenuManager () const
 
JCursorIndex GetDefaultCursor () const
 
bool GetHint (JString *text) const
 
void SetHint (const JString &text)
 
void ClearHint ()
 
bool GetVisibleRectGlobal (const JRect &origRectG, JRect *visRectG) const
 
void ForEach (const std::function< void(JXContainer *)> &f, const bool recurse)
 
void ForEach (const std::function< void(const JXContainer *)> &f, const bool recurse) const
 
void ExpandToFitContent ()
 
virtual bool RunInternalFTC (const bool horizontal, JCoordinate *newSize)
 
JRect ComputePaddingForInternalFTC () const
 
bool FindContainer (const JPoint &ptG, JXContainer **container) const
 
virtual bool IsMenu () const
 
virtual bool IsMenuTable () const
 
- Public Member Functions inherited from JBroadcaster
 JBroadcaster ()
 
virtual ~JBroadcaster ()
 
JBroadcasteroperator= (const JBroadcaster &source)
 
bool HasSenders () const
 
JSize GetSenderCount () const
 
bool HasRecipients () const
 
JSize GetRecipientCount () const
 
virtual JString ToString () const
 
template<class T >
void ListenTo (const JBroadcaster *sender, const std::function< void(const T &)> &f)
 

Static Public Member Functions

static void SkipGeometry (std::istream &input)
 
static bool WillAutoDockNewWindows ()
 
static void ShouldAutoDockNewWindows (const bool autoDock)
 
static bool WillFocusFollowCursorInDock ()
 
static void ShouldFocusFollowCursorInDock (const bool focusFollowsCursor)
 
static JIndex GetULShortcutIndex (const JString &label, const JString *list)
 
static bool IsDeleteWindowMessage (const JXDisplay *display, const XEvent &xEvent)
 
static bool IsWMPingMessage (const JXDisplay *display, const XEvent &xEvent)
 
static bool IsSaveYourselfMessage (const JXDisplay *display, const XEvent &xEvent)
 
static void SetDesktopHMargin (const JCoordinate dw)
 
static void SetDesktopVMargin (const JCoordinate dh)
 
static void AnalyzeWindowManager (JXDisplay *d)
 
- Static Public Member Functions inherited from JXContainer
static void DebugExpandToFitContent (const bool horiz)
 
static void DebugExpandToFitContentExtras (const bool noop, const bool overlap)
 

Static Public Attributes

static const JUtf8BytekIconified = "Iconified::JXWindow"
 
static const JUtf8BytekDeiconified = "Deiconified::JXWindow"
 
static const JUtf8BytekMapped = "Mapped::JXWindow"
 
static const JUtf8BytekUnmapped = "Unmapped::JXWindow"
 
static const JUtf8BytekRaised = "Raised::JXWindow"
 
static const JUtf8BytekDocked = "Docked::JXWindow"
 
static const JUtf8BytekUndocked = "Undocked::JXWindow"
 
static const JUtf8BytekMinSizeChanged = "MinSizeChanged::JXWindow"
 
static const JUtf8BytekTitleChanged = "TitleChanged::JXWindow"
 

Protected Member Functions

void Draw (JXWindowPainter &p, const JRect &rect) override
 
void DrawBorder (JXWindowPainter &p, const JRect &frame) override
 
void DrawBackground (JXWindowPainter &p, const JRect &frame) override
 
void BoundsMoved (const JCoordinate dx, const JCoordinate dy) override
 
void EnclosingBoundsMoved (const JCoordinate dx, const JCoordinate dy) override
 
void BoundsResized (const JCoordinate dw, const JCoordinate dh) override
 
void EnclosingBoundsResized (const JCoordinate dw, const JCoordinate dh) override
 
void FTCAdjustSize (const JCoordinate dw, const JCoordinate dh) override
 
- Protected Member Functions inherited from JXContainer
 JXContainer (JXWindow *window, JXContainer *enclosure)
 
 JXContainer (JXDisplay *display, JXWindow *window, JXContainer *enclosure)
 
void TurnOnBufferedDrawing ()
 
void DrawAll (JXWindowPainter &p, const JRect &frameG)
 
virtual void HandleMouseEnter ()
 
virtual void HandleMouseHere (const JPoint &pt, const JXKeyModifiers &modifiers)
 
virtual void HandleMouseLeave ()
 
virtual bool AcceptDrag (const JPoint &pt, const JXMouseButton button, const JXKeyModifiers &modifiers)
 
virtual void HandleMouseDown (const JPoint &pt, const JXMouseButton button, const JSize clickCount, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers)
 
virtual void HandleMouseDrag (const JPoint &pt, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers)
 
virtual void HandleMouseUp (const JPoint &pt, const JXMouseButton button, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers)
 
virtual bool HitSamePart (const JPoint &pt1, const JPoint &pt2) const
 
virtual bool WillAcceptDrop (const JArray< Atom > &typeList, Atom *action, const JPoint &pt, const Time time, const JXWidget *source)
 
virtual void HandleDNDEnter ()
 
virtual void HandleDNDHere (const JPoint &pt, const JXWidget *source)
 
virtual void HandleDNDLeave ()
 
virtual void HandleDNDDrop (const JPoint &pt, const JArray< Atom > &typeList, const Atom action, const Time time, const JXWidget *source)
 
virtual void HandleDNDScroll (const JPoint &pt, const JXMouseButton scrollButton, const JXKeyModifiers &modifiers)
 
bool DispatchClientMessage (const XClientMessageEvent &clientMessage)
 
virtual bool HandleClientMessage (const XClientMessageEvent &clientMessage)
 
void NotifyBoundsMoved (const JCoordinate dx, const JCoordinate dy)
 
void NotifyBoundsResized (const JCoordinate dw, const JCoordinate dh)
 
virtual bool IncludeInFTC () const
 
virtual bool NeedsInternalFTC () const
 
virtual JCoordinate GetFTCMinContentSize (const bool horizontal) const
 
virtual JRect GetFrameForFTC () const
 
bool GetEnclosedObjects (JPtrArrayIterator< JXContainer > **iter) const
 
void DeleteEnclosedObjects ()
 
void ShowCursor ()
 
void HideCursor ()
 
void SetDefaultCursor (const JCursorIndex index)
 
void DispatchCursor (const JPoint &ptG, const JXKeyModifiers &modifiers)
 
virtual void AdjustCursor (const JPoint &pt, const JXKeyModifiers &modifiers)
 
void DisplayCursor (const JCursorIndex index)
 
JXCursorAnimatorCreateCursorAnimator ()
 
JXCursorAnimatorGetCursorAnimator () const
 
void AnimateCursor () const
 
void RemoveCursorAnimator ()
 
void ActivateCursor (const JPoint &ptG, const JXKeyModifiers &modifiers)
 
void DeactivateCursor ()
 
std::ostream & GetFTCLog () const
 
virtual bool StealMouse (const int eventType, const JPoint &ptG, const JXMouseButton button, const unsigned int state)
 
- Protected Member Functions inherited from JBroadcaster
 JBroadcaster (const JBroadcaster &source)
 
void ListenTo (const JBroadcaster *sender)
 
void StopListening (const JBroadcaster *sender)
 
void ClearWhenGoingAway (const JBroadcaster *sender, void *pointerToMember)
 
void StopListening (const JBroadcaster *sender, const std::type_info &messageType)
 
template<class T >
void Send (JBroadcaster *recipient, const T &message)
 
template<class T >
void Broadcast (const T &message)
 
virtual void Receive (JBroadcaster *sender, const Message &message)
 
void SendWithFeedback (JBroadcaster *recipient, Message *message)
 
void BroadcastWithFeedback (Message *message)
 
virtual void ReceiveWithFeedback (JBroadcaster *sender, Message *message)
 
virtual void ReceiveGoingAway (JBroadcaster *sender)
 

Friends

class JXDockWindowTask
 
class JXExpandWindowToFitContentTask
 

Detailed Description

If we ever allow a constructor that takes a JXDisplay*, we have to
rewrite JXGetCurrFontMgr.

Member Enumeration Documentation

◆ CloseAction

Enumerator
kDeactivateDirector 
kCloseDirector 
kCloseDisplay 
kQuitApp 

◆ WMType

Enumerator
kWMNormalType 
kWMDialogType 
kWMPulldownMenuType 
kWMPopupMenuType 
kWMTooltipType 

Constructor & Destructor Documentation

◆ JXWindow()

JXWindow::JXWindow ( JXWindowDirector director,
const JCoordinate  w,
const JCoordinate  h,
const JString title,
const bool  isOverlay = false 
)

◆ ~JXWindow()

JXWindow::~JXWindow ( )
override

Member Function Documentation

◆ AcceptSaveYourself()

void JXWindow::AcceptSaveYourself ( const bool  accept)

◆ Activate()

void JXWindow::Activate ( )
overridevirtual

Reimplemented from JXContainer.

◆ AdjustSize()

void JXWindow::AdjustSize ( const JCoordinate  dw,
const JCoordinate  dh 
)
overridevirtual

Implements JXContainer.

◆ AnalyzeWindowManager()

void JXWindow::AnalyzeWindowManager ( JXDisplay d)
static

◆ BeginDrag()

bool JXWindow::BeginDrag ( JXContainer obj,
const JPoint ptG,
const JXButtonStates buttonStates,
const JXKeyModifiers modifiers 
)

Generate fake messages to get the given widget ready for HandleMouseDrag().

◆ BoundsMoved()

void JXWindow::BoundsMoved ( const JCoordinate  dx,
const JCoordinate  dy 
)
overrideprotectedvirtual

Implements JXContainer.

◆ BoundsResized()

void JXWindow::BoundsResized ( const JCoordinate  dw,
const JCoordinate  dh 
)
overrideprotectedvirtual

Implements JXContainer.

◆ BufferDrawing()

void JXWindow::BufferDrawing ( const bool  bufferDrawing)

◆ CenterOnScreen()

void JXWindow::CenterOnScreen ( )

◆ CheckForMapOrExpose()

void JXWindow::CheckForMapOrExpose ( )

For use by blocking loops that want to refresh a particular window. This isn't safe in general because it can invoke huge amounts of code. Use with caution.

◆ ClearAllMenuShortcuts()

void JXWindow::ClearAllMenuShortcuts ( JXTextMenu menu)

◆ ClearMaxSize()

void JXWindow::ClearMaxSize ( )

◆ ClearMenuShortcut()

void JXWindow::ClearMenuShortcut ( JXTextMenu menu,
const JIndex  menuItem 
)

◆ ClearMinSize()

void JXWindow::ClearMinSize ( )

◆ ClearShortcuts()

void JXWindow::ClearShortcuts ( JXWidget widget)

◆ ClearStepSize()

void JXWindow::ClearStepSize ( )

◆ Close()

bool JXWindow::Close ( )

◆ CountClicks()

JSize JXWindow::CountClicks ( JXContainer container,
const JPoint pt 
)

pt must be in the local coordinates of the given container.

◆ DeactivateHint()

void JXWindow::DeactivateHint ( )

◆ Deiconify()

void JXWindow::Deiconify ( )

◆ DispatchCursor()

void JXWindow::DispatchCursor ( )

◆ DispatchMouse()

void JXWindow::DispatchMouse ( )

◆ DisplayXCursor()

void JXWindow::DisplayXCursor ( const JCursorIndex  index)

◆ Dock()

bool JXWindow::Dock ( JXDockWidget dock,
const Window  parent,
const JRect geom 
)

dock can be nullptr. We take an X Window instead of a JXWindow in order to allow JXWindows to be docked in other program's windows.

geom must be in the local coordinates of parent.

Returns false if the window cannot be docked.

◆ Draw()

void JXWindow::Draw ( JXWindowPainter p,
const JRect rect 
)
overrideprotectedvirtual

Implements JXContainer.

◆ DrawBackground()

void JXWindow::DrawBackground ( JXWindowPainter p,
const JRect frame 
)
overrideprotectedvirtual

Implements JXContainer.

◆ DrawBorder()

void JXWindow::DrawBorder ( JXWindowPainter p,
const JRect frame 
)
overrideprotectedvirtual

Implements JXContainer.

◆ EnclosingBoundsMoved()

void JXWindow::EnclosingBoundsMoved ( const JCoordinate  dx,
const JCoordinate  dy 
)
overrideprotectedvirtual

We will never get this message.

Implements JXContainer.

◆ EnclosingBoundsResized()

void JXWindow::EnclosingBoundsResized ( const JCoordinate  dwb,
const JCoordinate  dhb 
)
overrideprotectedvirtual

We will never get this message.

Implements JXContainer.

◆ EndDrag()

void JXWindow::EndDrag ( JXContainer obj,
const JPoint ptG,
const JXButtonStates buttonStates,
const JXKeyModifiers modifiers 
)

Generate fake messages to the current drag recipient so that it thinks that the mouse was released.

◆ FTCAdjustSize()

void JXWindow::FTCAdjustSize ( const JCoordinate  dw,
const JCoordinate  dh 
)
overrideprotectedvirtual

Adjust our size without affecting enclosed widgets, because they have already been resized. To avoid size drift when storing prefs, save the delta so we can subtract it before saving our geometry.

Reimplemented from JXContainer.

◆ GetApertureGlobal()

JRect JXWindow::GetApertureGlobal ( ) const
overridevirtual

Returns the aperture in global coordinates.

Implements JXContainer.

◆ GetBackColor()

JColorID JXWindow::GetBackColor ( ) const
inline

◆ GetBoundsGlobal()

JRect JXWindow::GetBoundsGlobal ( ) const
overridevirtual

Returns the bounds in global coordinates.

Implements JXContainer.

◆ GetCloseAction()

JXWindow::CloseAction JXWindow::GetCloseAction ( ) const
inline

◆ GetDesktopLocation()

JPoint JXWindow::GetDesktopLocation ( ) const
inline

◆ GetDirector()

JXWindowDirector * JXWindow::GetDirector ( ) const
inline

◆ GetDisplay()

JXDisplay * JXWindow::GetDisplay ( ) const
inline

◆ GetDockWidget()

bool JXWindow::GetDockWidget ( JXDockWidget **  dock) const
inline

◆ GetDockWindow()

bool JXWindow::GetDockWindow ( JXWindow **  window) const

◆ GetFocusWidget()

bool JXWindow::GetFocusWidget ( JXWidget **  widget) const
inline

Returns true if a widget has focus.

◆ GetFrameGlobal()

JRect JXWindow::GetFrameGlobal ( ) const
overridevirtual

Returns the frame in global coordinates.

Implements JXContainer.

◆ GetIconWidget()

bool JXWindow::GetIconWidget ( JXWindowIcon **  widget) const

◆ GetMaxSize()

JPoint JXWindow::GetMaxSize ( ) const
inline

Doesn't return JPoint& to avoid locking us into a particular implementation.

◆ GetMinSize()

JPoint JXWindow::GetMinSize ( ) const
inline

Doesn't return JPoint& to avoid locking us into a particular implementation.

◆ GetMouseContainer()

bool JXWindow::GetMouseContainer ( JXContainer **  window) const
inline

◆ GetRootChild()

bool JXWindow::GetRootChild ( Window *  rootChild) const

If possible, returns the X window that is our ancestor and a child of the root window.

◆ GetTitle()

const JString & JXWindow::GetTitle ( ) const
inline

◆ GetULShortcutIndex()

JIndex JXWindow::GetULShortcutIndex ( const JString label,
const JString list 
)
static

Returns the index into label of the first shortcut character in the given list. Returns zero if the first shortcut character is not found in label. We return zero rather than bool because JXWindowPainter::String() accepts zero to mean "no shortcut".

We perform a case-insensitive search first for "^c", then " c", then "[^a-z]c", and finally anywhere.

For convenience, list can be nullptr.

◆ GetWindowType()

bool JXWindow::GetWindowType ( JString type) const
inline

◆ GetXWindow()

Window JXWindow::GetXWindow ( ) const
inline

◆ GlobalToLocal() [1/4]

JPoint JXWindow::GlobalToLocal ( const JCoordinate  x,
const JCoordinate  y 
) const
overridevirtual

Implements JXContainer.

◆ GlobalToLocal() [2/4]

virtual JPoint JXContainer::GlobalToLocal ( const JCoordinate  x,
const JCoordinate  y 
) const
virtual

Implements JXContainer.

◆ GlobalToLocal() [3/4]

JPoint JXContainer::GlobalToLocal ( const JPoint pt) const
inline

◆ GlobalToLocal() [4/4]

JRect JXContainer::GlobalToLocal ( const JRect r) const

◆ GlobalToRoot() [1/3]

JPoint JXWindow::GlobalToRoot ( const JCoordinate  x,
const JCoordinate  y 
) const
inline

◆ GlobalToRoot() [2/3]

JPoint JXWindow::GlobalToRoot ( const JPoint pt) const
inline

◆ GlobalToRoot() [3/3]

JRect JXWindow::GlobalToRoot ( const JRect r) const

◆ GrabPointer()

bool JXWindow::GrabPointer ( JXContainer obj)

◆ HandleEvent()

void JXWindow::HandleEvent ( const XEvent &  xEvent)

◆ HasFocus()

bool JXWindow::HasFocus ( ) const
inline

Returns true if keypresses go to this window.

◆ HasWindowType()

bool JXWindow::HasWindowType ( ) const
inline

◆ Hide()

void JXWindow::Hide ( )
overridevirtual

PrivateHide() is called during docking, after itsIsDockedFlag is set.

Reimplemented from JXContainer.

◆ HideFromTaskbar()

void JXWindow::HideFromTaskbar ( )

Exclude this window from a task bar.

Call this before SetIcon() to avoid losing the icon's mask.

◆ Iconify()

void JXWindow::Iconify ( )

◆ InstallMenuShortcut()

bool JXWindow::InstallMenuShortcut ( JXTextMenu menu,
const JIndex  menuItem,
const int  key,
const JXKeyModifiers origModifiers 
)

◆ InstallShortcut()

bool JXWindow::InstallShortcut ( JXWidget widget,
const int  key,
const JXKeyModifiers modifiers 
)

To specify a control character, you must pass in the unmodified character along with modifiers.control(). e.g. Pass in 'A',control instead of JXCtrl('A'),control.

◆ InstallShortcuts()

void JXWindow::InstallShortcuts ( JXWidget widget,
const JString list 
)

Parses the given string to get the shortcuts. A caret (^) indicates that the next character is a control character. A hash (#) indicates that the next character requires the Meta modifier. F1 - F35 are parsed into function keys.

◆ IsDeleteWindowMessage()

bool JXWindow::IsDeleteWindowMessage ( const JXDisplay display,
const XEvent &  xEvent 
)
static

◆ IsDocked()

bool JXWindow::IsDocked ( ) const
inline

◆ IsDragging()

bool JXWindow::IsDragging ( ) const
inline

◆ IsIconified()

bool JXWindow::IsIconified ( ) const
inline

◆ IsKeepingBufferPixmap()

bool JXWindow::IsKeepingBufferPixmap ( ) const
inline

Do NOT use these feature unless you feel like wasting an enormous amount of server memory. It is not appropriate for anything other than a very temporary window.

Keeping the buffer pixmap means that redraws do not have to make a server round-trip to create a new pixmap each time.

Using the pixmap as the window background means that updates caused by expose events are instantaneous because the server knows what to display.

◆ IsSaveYourselfMessage()

bool JXWindow::IsSaveYourselfMessage ( const JXDisplay display,
const XEvent &  xEvent 
)
static

◆ IsUsingPixmapAsBackground()

bool JXWindow::IsUsingPixmapAsBackground ( ) const
inline

◆ IsWMPingMessage()

bool JXWindow::IsWMPingMessage ( const JXDisplay display,
const XEvent &  xEvent 
)
static

◆ KeepBufferPixmap()

void JXWindow::KeepBufferPixmap ( const bool  keepIt)
inline

◆ KillFocus()

void JXWindow::KillFocus ( )

This does not check for valid input. Use with caution!

◆ LocalToGlobal() [1/4]

JPoint JXWindow::LocalToGlobal ( const JCoordinate  x,
const JCoordinate  y 
) const
overridevirtual

Implements JXContainer.

◆ LocalToGlobal() [2/4]

virtual JPoint JXContainer::LocalToGlobal ( const JCoordinate  x,
const JCoordinate  y 
) const
virtual

Implements JXContainer.

◆ LocalToGlobal() [3/4]

JPoint JXContainer::LocalToGlobal ( const JPoint pt) const
inline

◆ LocalToGlobal() [4/4]

JRect JXContainer::LocalToGlobal ( const JRect r) const

◆ LockCurrentMaxSize()

void JXWindow::LockCurrentMaxSize ( )
inline

◆ LockCurrentMinSize()

void JXWindow::LockCurrentMinSize ( )
inline

◆ LockCurrentSize()

void JXWindow::LockCurrentSize ( )
inline

◆ Lower()

void JXWindow::Lower ( )

Make this the bottom window.

◆ MenuItemInserted()

void JXWindow::MenuItemInserted ( JXTextMenu menu,
const JIndex  newItem 
)

Update the item indices of the shortcuts.

◆ MenuItemRemoved()

void JXWindow::MenuItemRemoved ( JXTextMenu menu,
const JIndex  oldItem 
)

Remove the shortcuts for the item and update the item indices of the other shortcuts.

◆ Move()

void JXWindow::Move ( const JCoordinate  dx,
const JCoordinate  dy 
)
overridevirtual

Implements JXContainer.

◆ OKToUnfocusCurrentWidget()

bool JXWindow::OKToUnfocusCurrentWidget ( ) const

◆ Place()

void JXWindow::Place ( const JCoordinate  enclX,
const JCoordinate  enclY 
)
overridevirtual

We can't short-circuit if the size won't change because there might be geometry events waiting in the queue.

Implements JXContainer.

◆ PlaceAsDialogWindow()

void JXWindow::PlaceAsDialogWindow ( )

Following Macintosh Human Interface Guidelines, dialog windows have 1/3 blank space above and 2/3 blank space below.

◆ PrintWindowConfig()

void JXWindow::PrintWindowConfig ( )

◆ Raise()

void JXWindow::Raise ( const bool  grabKeyboardFocus = true)

Make this the top window.

◆ ReadGeometry() [1/2]

void JXWindow::ReadGeometry ( const JString data,
const bool  skipDocking = false 
)

Read in position, size, and state and adjust ourselves.

In the version that takes JString&, the string can be empty, in which case, nothing changes. If the string is not empty, it is assumed to contain only the output of WriteGeometry().

◆ ReadGeometry() [2/2]

void JXWindow::ReadGeometry ( std::istream &  input,
const bool  skipDocking = false 
)

◆ RecalcMouseContainer()

void JXWindow::RecalcMouseContainer ( )
inline

If the user is dragging, the mouse container is the dragging widget, and this should not change until the mouse is released.

◆ Redraw()

void JXWindow::Redraw ( ) const
overridevirtual

Implements JXContainer.

◆ RedrawRect()

void JXWindow::RedrawRect ( const JRect rect) const

◆ Refresh()

void JXWindow::Refresh ( ) const
overridevirtual

Implements JXContainer.

◆ RefreshRect()

void JXWindow::RefreshRect ( const JRect rect) const

◆ RegisterFocusWidget()

void JXWindow::RegisterFocusWidget ( JXWidget widget)

◆ RequestFocus()

void JXWindow::RequestFocus ( )

Ask X for keyboard input focus. This uses XSetInputFocus() rather than XGrabKeyboard().

◆ Resume()

void JXWindow::Resume ( )
overridevirtual

Reimplemented from JXContainer.

◆ RootToGlobal() [1/3]

JPoint JXWindow::RootToGlobal ( const JCoordinate  x,
const JCoordinate  y 
) const
inline

◆ RootToGlobal() [2/3]

JPoint JXWindow::RootToGlobal ( const JPoint pt) const
inline

◆ RootToGlobal() [3/3]

JRect JXWindow::RootToGlobal ( const JRect r) const

◆ SetBackColor()

void JXWindow::SetBackColor ( const JColorID  color)

◆ SetCloseAction()

void JXWindow::SetCloseAction ( const CloseAction  closeAction)
inline

◆ SetCurrentHintManager()

void JXWindow::SetCurrentHintManager ( JXHintManager mgr)
inline

◆ SetDesktopHMargin()

static void JXWindow::SetDesktopHMargin ( const JCoordinate  dw)
static

◆ SetDesktopVMargin()

static void JXWindow::SetDesktopVMargin ( const JCoordinate  dh)
static

◆ SetIcon() [1/2]

void JXWindow::SetIcon ( JXImage icon)

Sets the icon to be displayed when the window is iconified.

Call this after SetWMClass() to avoid losing the icon's mask.

We take ownership of icon.

Once you use an icon with a mask, you will not able to clear the mask. You must instead specify a square mask. This is a design flaw in X.

◆ SetIcon() [2/2]

JXWindowIcon * JXWindow::SetIcon ( JXImage normalIcon,
JXImage dropIcon 
)

Sets the icon to be displayed when the window is iconified. This version creates a window with a JXWindowIcon that you can ListenTo() to accept DND.

Call this after SetWMClass() to avoid losing the icon's mask.

We take ownership of the icons.

Once you use this version, you will no longer be able to use the version that doesn't use an X window. This is a design flaw in X.

◆ SetMaxSize()

void JXWindow::SetMaxSize ( const JCoordinate  w,
const JCoordinate  h 
)

◆ SetMinSize()

void JXWindow::SetMinSize ( const JCoordinate  w,
const JCoordinate  h 
)

◆ SetMouseContainer()

void JXWindow::SetMouseContainer ( JXContainer obj,
const JPoint ptG,
const unsigned int  state 
)

◆ SetSize()

void JXWindow::SetSize ( const JCoordinate  w,
const JCoordinate  h 
)
overridevirtual

We can't short-circuit if the size won't change because there might be geometry events waiting in the queue.

Implements JXContainer.

◆ SetStepSize()

void JXWindow::SetStepSize ( const JCoordinate  dw,
const JCoordinate  dh 
)

◆ SetTitle()

void JXWindow::SetTitle ( const JString title)

◆ SetTransientFor()

void JXWindow::SetTransientFor ( const JXWindowDirector director)

Provide information to the window manager about which window we are subsidiary to.

◆ SetWantDrag()

void JXWindow::SetWantDrag ( const bool  wantDrag)
inline

◆ SetWMClass()

void JXWindow::SetWMClass ( const JUtf8Byte c_class,
const JUtf8Byte instance 
)

Provide information to the window manager that can be used to identify the window's type. This is useful when excluding certain types of windows from a task bar.

Call this before SetIcon() to avoid losing the icon's mask.

◆ SetWMWindowType()

void JXWindow::SetWMWindowType ( const WMType  type)

◆ SetXIMPosition()

void JXWindow::SetXIMPosition ( const JPoint ptG)

◆ ShouldAutoDockNewWindows()

void JXWindow::ShouldAutoDockNewWindows ( const bool  autoDock)
inlinestatic

◆ ShouldFocusFollowCursorInDock()

void JXWindow::ShouldFocusFollowCursorInDock ( const bool  focusFollowsCursor)
inlinestatic

◆ ShouldFocusWhenShow()

void JXWindow::ShouldFocusWhenShow ( const bool  focusWhenShow)
inline

◆ Show()

void JXWindow::Show ( )
overridevirtual

Reimplemented from JXContainer.

◆ SkipGeometry()

void JXWindow::SkipGeometry ( std::istream &  input)
static

◆ SwitchFocusToFirstWidget()

bool JXWindow::SwitchFocusToFirstWidget ( )

◆ SwitchFocusToFirstWidgetWithAncestor()

bool JXWindow::SwitchFocusToFirstWidgetWithAncestor ( JXContainer ancestor)

◆ SwitchFocusToWidget()

bool JXWindow::SwitchFocusToWidget ( JXWidget widget)

◆ Undock()

void JXWindow::Undock ( )

◆ UndockAllChildWindows()

void JXWindow::UndockAllChildWindows ( )

◆ UndockedMove()

void JXWindow::UndockedMove ( const JCoordinate  dx,
const JCoordinate  dy 
)

◆ UndockedPlace()

void JXWindow::UndockedPlace ( const JCoordinate  enclX,
const JCoordinate  enclY 
)

◆ UndockedSetSize()

void JXWindow::UndockedSetSize ( const JCoordinate  w,
const JCoordinate  h,
const bool  ftc = false 
)

◆ UnfocusCurrentWidget()

bool JXWindow::UnfocusCurrentWidget ( )

◆ UngrabPointer()

void JXWindow::UngrabPointer ( JXContainer obj)

◆ UnregisterFocusWidget()

void JXWindow::UnregisterFocusWidget ( JXWidget widget)

◆ Update()

void JXWindow::Update ( )

It is a bad idea to keep itsBufferPixmap between updates because this wastes an enormous amount of server memory. It is only done under special circumstances that warrant optimization.

jafl 11/12/97: Creating the JXWindowPainter each time we are called is easier than keeping it because we don't have to worry about what Reset() doesn't clear and because the cost is negligible compared with creating the buffer pixmap.

◆ UpdateForScroll()

void JXWindow::UpdateForScroll ( const JRect ap,
const JRect src,
const JRect dest 
)

Before this function can be used, it must account for areas of the window that are obscured by other windows. In addition, it must also deal with issues such as:

JTextEditor caret is visible, but it doesn't move like the text.

Enclosed widgets.  The input field in a table may trigger scrolling,
and then it doesn't move like the cells.  Even when it does,
updating needs to be smoother so it doesn't look so ugly.

◆ UsePixmapAsBackground()

void JXWindow::UsePixmapAsBackground ( const bool  useIt)
inline

◆ WillAutoDockNewWindows()

bool JXWindow::WillAutoDockNewWindows ( )
inlinestatic

◆ WillFocusFollowCursorInDock()

bool JXWindow::WillFocusFollowCursorInDock ( )
inlinestatic

◆ WillFocusWhenShown()

bool JXWindow::WillFocusWhenShown ( ) const
inline

◆ WriteGeometry() [1/2]

void JXWindow::WriteGeometry ( JString data) const

Write out our position, size, and state (iconified).

We have to write out an ending delimiter that is never used anywhere else so we can at least ignore the data if we can't read the given version.

◆ WriteGeometry() [2/2]

void JXWindow::WriteGeometry ( std::ostream &  output) const

Friends And Related Symbol Documentation

◆ JXDockWindowTask

friend class JXDockWindowTask
friend

◆ JXExpandWindowToFitContentTask

friend class JXExpandWindowToFitContentTask
friend

Member Data Documentation

◆ kDeiconified

const JUtf8Byte * JXWindow::kDeiconified = "Deiconified::JXWindow"
static

◆ kDocked

const JUtf8Byte * JXWindow::kDocked = "Docked::JXWindow"
static

◆ kIconified

const JUtf8Byte * JXWindow::kIconified = "Iconified::JXWindow"
static

◆ kMapped

const JUtf8Byte * JXWindow::kMapped = "Mapped::JXWindow"
static

◆ kMinSizeChanged

const JUtf8Byte * JXWindow::kMinSizeChanged = "MinSizeChanged::JXWindow"
static

◆ kRaised

const JUtf8Byte * JXWindow::kRaised = "Raised::JXWindow"
static

◆ kTitleChanged

const JUtf8Byte * JXWindow::kTitleChanged = "TitleChanged::JXWindow"
static

◆ kUndocked

const JUtf8Byte * JXWindow::kUndocked = "Undocked::JXWindow"
static

◆ kUnmapped

const JUtf8Byte * JXWindow::kUnmapped = "Unmapped::JXWindow"
static

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