From e17b33e56b74c192b47ed694aa367c56a816eb2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sun, 5 Jun 2005 18:57:55 +0000 Subject: [PATCH] The window was removing the app_server connection too early, and thus hang in Quit(). Removed the stopConnection() method. Cleaned up header a bit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12959 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/interface/Window.h | 603 +++++++++++++++------------------- src/kits/interface/Window.cpp | 18 +- 2 files changed, 275 insertions(+), 346 deletions(-) diff --git a/headers/os/interface/Window.h b/headers/os/interface/Window.h index 32aa0a7047..5099be8986 100644 --- a/headers/os/interface/Window.h +++ b/headers/os/interface/Window.h @@ -1,5 +1,5 @@ //------------------------------------------------------------------------------ -// Copyright (c) 2001-2002, OpenBeOS +// Copyright (c) 2001-2005, Haiku // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), @@ -23,38 +23,20 @@ // Author: Adrian Oanca (adioanca@mymail.ro) // Description: BWindow is the base class for all windows (graphic areas // displayed on-screen). -// -// -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -// NOTE(!!!) All private non virtual functions are to be renamed following -// this scheme: word_another_third <-> wordAnotherThird -// OBOS Team: If you use one of BWindow's private functions, please addapt to this code -//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //------------------------------------------------------------------------------ - #ifndef _WINDOW_H #define _WINDOW_H -// Standard Includes ----------------------------------------------------------- - -// System Includes ------------------------------------------------------------- #include #include #include #include #include #include - -// Project Includes ------------------------------------------------------------ #include -// Local Includes -------------------------------------------------------------- - -// Local Defines --------------------------------------------------------------- class BPortLink; -// Globals --------------------------------------------------------------------- - // window definitions ---------------------------------------------------------- @@ -136,360 +118,317 @@ class ViewAttr; // BWindow class --------------------------------------------------------------- class BWindow : public BLooper { - public: - BWindow(BRect frame, - const char* title, - window_type type, - uint32 flags, - uint32 workspace = B_CURRENT_WORKSPACE); - BWindow(BRect frame, - const char* title, - window_look look, - window_feel feel, - uint32 flags, - uint32 workspace = B_CURRENT_WORKSPACE); -virtual ~BWindow(); + BWindow(BRect frame, const char* title, + window_type type, uint32 flags, + uint32 workspace = B_CURRENT_WORKSPACE); + BWindow(BRect frame, const char* title, + window_look look, window_feel feel, + uint32 flags, + uint32 workspace = B_CURRENT_WORKSPACE); + virtual ~BWindow(); BWindow(BMessage* data); -static BArchivable *Instantiate(BMessage* data); -virtual status_t Archive(BMessage* data, bool deep = true) const; + static BArchivable *Instantiate(BMessage* data); + virtual status_t Archive(BMessage* data, bool deep = true) const; -virtual void Quit(); - void Close(); // Synonym of Quit() + virtual void Quit(); + void Close() { Quit(); } - void AddChild(BView* child, BView* before = NULL); - bool RemoveChild(BView* child); - int32 CountChildren() const; - BView *ChildAt(int32 index) const; + void AddChild(BView* child, BView* before = NULL); + bool RemoveChild(BView* child); + int32 CountChildren() const; + BView *ChildAt(int32 index) const; -virtual void DispatchMessage(BMessage* message, BHandler* handler); -virtual void MessageReceived(BMessage* message); -virtual void FrameMoved(BPoint new_position); -virtual void WorkspacesChanged(uint32 old_ws, uint32 new_ws); -virtual void WorkspaceActivated(int32 ws, bool state); -virtual void FrameResized(float new_width, float new_height); -virtual void Minimize(bool minimize); -virtual void Zoom( BPoint rec_position, - float rec_width, - float rec_height); - void Zoom(); - void SetZoomLimits(float maxWidth, float maxHeight); // changed from: SetZoomLimits(float max_h, float max_v); -virtual void ScreenChanged(BRect screen_size, color_space depth); - void SetPulseRate(bigtime_t rate); - bigtime_t PulseRate() const; - void AddShortcut( uint32 key, - uint32 modifiers, - BMessage* msg); - void AddShortcut( uint32 key, - uint32 modifiers, - BMessage* msg, - BHandler* target); - void RemoveShortcut(uint32 key, uint32 modifiers); - void SetDefaultButton(BButton* button); - BButton *DefaultButton() const; -virtual void MenusBeginning(); -virtual void MenusEnded(); - bool NeedsUpdate() const; - void UpdateIfNeeded(); - BView *FindView(const char* viewName) const; // changed from: FindView( const char* view_name ); - BView *FindView(BPoint) const; - BView *CurrentFocus() const; - void Activate(bool = true); -virtual void WindowActivated(bool state); - void ConvertToScreen(BPoint* pt) const; - BPoint ConvertToScreen(BPoint pt) const; - void ConvertFromScreen(BPoint* pt) const; - BPoint ConvertFromScreen(BPoint pt) const; - void ConvertToScreen(BRect* rect) const; - BRect ConvertToScreen(BRect rect) const; - void ConvertFromScreen(BRect* rect) const; - BRect ConvertFromScreen(BRect rect) const; - void MoveBy(float dx, float dy); - void MoveTo(BPoint); - void MoveTo(float x, float y); - void ResizeBy(float dx, float dy); - void ResizeTo(float width, float height); -virtual void Show(); -virtual void Hide(); - bool IsHidden() const; - bool IsMinimized() const; + virtual void DispatchMessage(BMessage* message, BHandler* handler); + virtual void MessageReceived(BMessage* message); + virtual void FrameMoved(BPoint new_position); + virtual void WorkspacesChanged(uint32 old_ws, uint32 new_ws); + virtual void WorkspaceActivated(int32 ws, bool state); + virtual void FrameResized(float new_width, float new_height); + virtual void Minimize(bool minimize); + virtual void Zoom(BPoint origin, float width, float height); + void Zoom(); + void SetZoomLimits(float maxWidth, float maxHeight); + virtual void ScreenChanged(BRect screen_size, color_space depth); + void SetPulseRate(bigtime_t rate); + bigtime_t PulseRate() const; + void AddShortcut(uint32 key, uint32 modifiers, + BMessage *msg); + void AddShortcut(uint32 key, uint32 modifiers, + BMessage *msg, BHandler *target); + void RemoveShortcut(uint32 key, uint32 modifiers); + void SetDefaultButton(BButton* button); + BButton *DefaultButton() const; + virtual void MenusBeginning(); + virtual void MenusEnded(); + bool NeedsUpdate() const; + void UpdateIfNeeded(); + BView *FindView(const char *viewName) const; + BView *FindView(BPoint) const; + BView *CurrentFocus() const; + void Activate(bool = true); + virtual void WindowActivated(bool state); - void Flush() const; - void Sync() const; + void ConvertToScreen(BPoint* pt) const; + BPoint ConvertToScreen(BPoint pt) const; + void ConvertFromScreen(BPoint* pt) const; + BPoint ConvertFromScreen(BPoint pt) const; + void ConvertToScreen(BRect* rect) const; + BRect ConvertToScreen(BRect rect) const; + void ConvertFromScreen(BRect* rect) const; + BRect ConvertFromScreen(BRect rect) const; - status_t SendBehind(const BWindow* window); + void MoveBy(float dx, float dy); + void MoveTo(BPoint); + void MoveTo(float x, float y); + void ResizeBy(float dx, float dy); + void ResizeTo(float width, float height); - void DisableUpdates(); - void EnableUpdates(); + virtual void Show(); + virtual void Hide(); + bool IsHidden() const; + bool IsMinimized() const; - void BeginViewTransaction(); // referred as OpenViewTransaction() in BeBook - void EndViewTransaction(); // referred as CommitViewTransaction() in BeBook + void Flush() const; + void Sync() const; - BRect Bounds() const; - BRect Frame() const; - const char *Title() const; - void SetTitle(const char* title); - bool IsFront() const; - bool IsActive() const; - void SetKeyMenuBar(BMenuBar* bar); - BMenuBar *KeyMenuBar() const; - void SetSizeLimits( float minWidth, // changed from: SetSizeLimits(float min_h, float max_h, float min_v, float max_v); - float maxWidth, - float minHeight, - float maxHeight); - void GetSizeLimits( float *minWidth, // changed from: SetSizeLimits(float* min_h, float* max_h, float* min_v, float* max_v); - float *maxWidth, - float *minHeight, - float *maxHeight); - uint32 Workspaces() const; - void SetWorkspaces(uint32); - BView *LastMouseMovedView() const; + status_t SendBehind(const BWindow* window); -virtual BHandler *ResolveSpecifier(BMessage* msg, - int32 index, - BMessage* specifier, - int32 form, - const char* property); -virtual status_t GetSupportedSuites(BMessage* data); + void DisableUpdates(); + void EnableUpdates(); - status_t AddToSubset(BWindow* window); - status_t RemoveFromSubset(BWindow* window); + void BeginViewTransaction(); // referred as OpenViewTransaction() in BeBook + void EndViewTransaction(); // referred as CommitViewTransaction() in BeBook -virtual status_t Perform(perform_code d, void* arg); + BRect Bounds() const; + BRect Frame() const; + const char *Title() const; + void SetTitle(const char* title); + bool IsFront() const; + bool IsActive() const; + void SetKeyMenuBar(BMenuBar* bar); + BMenuBar *KeyMenuBar() const; + void SetSizeLimits(float minWidth, float maxWidth, + float minHeight, float maxHeight); + void GetSizeLimits(float *minWidth, float *maxWidth, + float *minHeight, float *maxHeight); + uint32 Workspaces() const; + void SetWorkspaces(uint32); + BView *LastMouseMovedView() const; - status_t SetType(window_type type); - window_type Type() const; + virtual BHandler *ResolveSpecifier(BMessage* msg, int32 index, + BMessage* specifier, int32 form, const char* property); + virtual status_t GetSupportedSuites(BMessage* data); - status_t SetLook(window_look look); - window_look Look() const; + status_t AddToSubset(BWindow* window); + status_t RemoveFromSubset(BWindow* window); - status_t SetFeel(window_feel feel); - window_feel Feel() const; + virtual status_t Perform(perform_code d, void* arg); - status_t SetFlags(uint32); - uint32 Flags() const; + status_t SetType(window_type type); + window_type Type() const; - bool IsModal() const; - bool IsFloating() const; + status_t SetLook(window_look look); + window_look Look() const; - status_t SetWindowAlignment(window_alignment mode, - int32 h, - int32 hOffset = 0, - int32 width = 0, - int32 widthOffset = 0, - int32 v = 0, - int32 vOffset = 0, - int32 height = 0, - int32 heightOffset = 0); - status_t GetWindowAlignment(window_alignment* mode = NULL, - int32* h = NULL, - int32* hOffset = NULL, - int32* width = NULL, - int32* widthOffset = NULL, - int32* v = NULL, - int32* vOffset = NULL, - int32* height = NULL, - int32* heightOffset = NULL) const; + status_t SetFeel(window_feel feel); + window_feel Feel() const; -virtual bool QuitRequested(); -virtual thread_id Run(); + status_t SetFlags(uint32); + uint32 Flags() const; + + bool IsModal() const; + bool IsFloating() const; + + status_t SetWindowAlignment(window_alignment mode, int32 h, + int32 hOffset = 0, int32 width = 0, int32 widthOffset = 0, + int32 v = 0, int32 vOffset = 0, int32 height = 0, + int32 heightOffset = 0); + status_t GetWindowAlignment(window_alignment* mode = NULL, + int32* h = NULL, int32* hOffset = NULL, + int32* width = NULL, int32* widthOffset = NULL, + int32* v = NULL, int32* vOffset = NULL, + int32* height = NULL, int32* heightOffset = NULL) const; + + virtual bool QuitRequested(); + virtual thread_id Run(); // Private or reserved --------------------------------------------------------- private: + typedef BLooper inherited; -typedef BLooper inherited; + friend class BApplication; + friend class BBitmap; + friend class BScrollBar; + friend class BView; + friend class BMenuItem; + friend class BWindowScreen; + friend class BDirectWindow; + friend class BFilePanel; + friend class BHandler; + friend class _BEventMask; + friend void _set_menu_sem_(BWindow* w, sem_id sem); + friend status_t _safe_get_server_token_(const BLooper* , int32* ); -friend class BApplication; -friend class BBitmap; -friend class BScrollBar; -friend class BView; -friend class BMenuItem; -friend class BWindowScreen; -friend class BDirectWindow; -friend class BFilePanel; -friend class BHandler; -friend class _BEventMask; -friend void _set_menu_sem_(BWindow* w, sem_id sem); -friend status_t _safe_get_server_token_(const BLooper* , int32* ); + virtual void _ReservedWindow1(); + virtual void _ReservedWindow2(); + virtual void _ReservedWindow3(); + virtual void _ReservedWindow4(); + virtual void _ReservedWindow5(); + virtual void _ReservedWindow6(); + virtual void _ReservedWindow7(); + virtual void _ReservedWindow8(); -virtual void _ReservedWindow1(); -virtual void _ReservedWindow2(); -virtual void _ReservedWindow3(); -virtual void _ReservedWindow4(); -virtual void _ReservedWindow5(); -virtual void _ReservedWindow6(); -virtual void _ReservedWindow7(); -virtual void _ReservedWindow8(); + BWindow(); + BWindow(BWindow&); + BWindow &operator=(BWindow&); - BWindow(); - BWindow(BWindow&); - BWindow &operator=(BWindow&); - - BWindow(BRect frame, color_space depth, // to be implemented - uint32 bitmapFlags, int32 rowBytes); - void InitData(BRect frame, - const char* title, - window_look look, - window_feel feel, - uint32 flags, - uint32 workspace); - status_t ArchiveChildren(BMessage* data, bool deep) const; // call made from within Archive - status_t UnarchiveChildren(BMessage* data); // Instantiate(BMessage* data)->BWindow(BMessage)->UnarchiveChildren(BMessage* data) - void BitmapClose(); // to be implemented -virtual void task_looper(); // thread function - it's here where app_server messages are received -/* void start_drag( BMessage* msg, - int32 token, - BPoint offset, - BRect track_rect, - BHandler* reply_to); - void start_drag( BMessage* msg, - int32 token, - BPoint offset, - int32 bitmap_token, - drawing_mode dragMode, - BHandler* reply_to); -*/ - void prepareView(BView* aView); // changed from view_builder(BView* a_view); - void attachView(BView* aView); // changed from attach_builder(BView* a_view); - void detachView(BView* aView); // changed from detach_builder(BView* a_view); - //int32 get_server_token() const; - BMessage *extract_drop(BMessage* an_event, BHandler* *target); - //void movesize(uint32 opcode, float h, float v); - - //int32 MessagesWaiting(); + BWindow(BRect frame, color_space depth, + uint32 bitmapFlags, int32 rowBytes); + void InitData(BRect frame, const char* title, + window_look look, window_feel feel, + uint32 flags, uint32 workspace); + status_t ArchiveChildren(BMessage* data, bool deep) const; + status_t UnarchiveChildren(BMessage* data); + void BitmapClose(); // to be implemented + virtual void task_looper(); // thread function - it's here where app_server messages are received + /* void start_drag( BMessage* msg, + int32 token, + BPoint offset, + BRect track_rect, + BHandler* reply_to); + void start_drag( BMessage* msg, + int32 token, + BPoint offset, + int32 bitmap_token, + drawing_mode dragMode, + BHandler* reply_to); + */ + void prepareView(BView* aView); // changed from view_builder(BView* a_view); + void attachView(BView* aView); // changed from attach_builder(BView* a_view); + void detachView(BView* aView); // changed from detach_builder(BView* a_view); + //int32 get_server_token() const; + BMessage *extract_drop(BMessage* an_event, BHandler* *target); + //void movesize(uint32 opcode, float h, float v); - void handle_activate(BMessage* an_event); - //void do_view_frame(BMessage* an_event); - //void do_value_change(BMessage* an_event, BHandler* handler); - //void do_mouse_down(BMessage* an_event, BView* target); - //void do_mouse_moved(BMessage* an_event, BView* target); - //void do_key_down(BMessage* an_event, BHandler* handler); - //void do_key_up(BMessage* an_event, BHandler* handler); - void do_menu_event(BMessage* an_event); - //void do_draw_views(); -virtual BMessage *ConvertToMessage(void* raw, int32 code); - //_cmd_key_ *allocShortcut(uint32 key, uint32 modifiers); - //_cmd_key_ *FindShortcut(uint32 key, uint32 modifiers); - void AddShortcut(uint32 key, // !!! - and menu shortcuts to list when a menu is added - uint32 modifiers, - BMenuItem* item); - //void post_message(BMessage* message); - //void SetLocalTitle(const char* new_title); - //void enable_pulsing(bool enable); - BHandler *determine_target(BMessage* msg, BHandler* target, bool pref); - //void kb_navigate(); - //void navigate_to_next(int32 direction, bool group = false); - //void set_focus(BView* focus, bool notify_input_server); // what does notify_input_server mean??? why??? - bool InUpdate(); - void DequeueAll(); - //bool find_token_and_handler(BMessage* msg, int32* token, BHandler* *handler); - window_type composeType(window_look look, // changed from: compose_type(...) - window_feel feel) const; - void decomposeType(window_type type, // changed from: decompose_type(...) - window_look* look, - window_feel* feel) const; + //int32 MessagesWaiting(); - void SetIsFilePanel(bool yes); - bool IsFilePanel() const; -// OBOS BWindow's addon functions - uint32 WindowLookToInteger(window_look wl); - uint32 WindowFeelToInteger(window_feel wf); - void BuildTopView(); - void stopConnection(); - void setFocus(BView *focusView, bool notifyIputServer=false); + void handle_activate(BMessage* an_event); + //void do_view_frame(BMessage* an_event); + //void do_value_change(BMessage* an_event, BHandler* handler); + //void do_mouse_down(BMessage* an_event, BView* target); + //void do_mouse_moved(BMessage* an_event, BView* target); + //void do_key_down(BMessage* an_event, BHandler* handler); + //void do_key_up(BMessage* an_event, BHandler* handler); + void do_menu_event(BMessage* an_event); + //void do_draw_views(); + virtual BMessage *ConvertToMessage(void* raw, int32 code); + //_cmd_key_ *allocShortcut(uint32 key, uint32 modifiers); + //_cmd_key_ *FindShortcut(uint32 key, uint32 modifiers); + void AddShortcut(uint32 key, // !!! - and menu shortcuts to list when a menu is added + uint32 modifiers, + BMenuItem* item); + //void post_message(BMessage* message); + //void SetLocalTitle(const char* new_title); + //void enable_pulsing(bool enable); + BHandler *determine_target(BMessage* msg, BHandler* target, bool pref); + //void kb_navigate(); + //void navigate_to_next(int32 direction, bool group = false); + //void set_focus(BView* focus, bool notify_input_server); // what does notify_input_server mean??? why??? + bool InUpdate(); + void DequeueAll(); + //bool find_token_and_handler(BMessage* msg, int32* token, BHandler* *handler); + window_type composeType(window_look look, // changed from: compose_type(...) + window_feel feel) const; + void decomposeType(window_type type, // changed from: decompose_type(...) + window_look* look, + window_feel* feel) const; - bool handleKeyDown( uint32 key, uint32 modifiers); + void SetIsFilePanel(bool yes); + bool IsFilePanel() const; - // message: B_MOUSE_UP, B_MOUSE_DOWN, B_MOUSE_MOVED - void sendMessageUsingEventMask( int32 message, BPoint where ); - BView* sendMessageUsingEventMask2( BView* aView, int32 message, BPoint where ); - void sendPulse( BView* ); - int32 findShortcut(uint32 key, uint32 modifiers); - bool findHandler( BView* start, BHandler* handler ); - BView* findView(BView* aView, const char* viewName) const; - BView* findView(BView* aView, BPoint point) const; - BView* findView(BView* aView, int32 token); - - BView* findNextView( BView *focus, uint32 flags); - BView* findPrevView( BView *focus, uint32 flags); - BView* findLastChild(BView *parent); - bool handleKeyDown( const char key, uint32 modifiers); - void handleActivation( bool active ); - void activateView( BView *aView, bool active ); + uint32 WindowLookToInteger(window_look wl); + uint32 WindowFeelToInteger(window_feel wf); + void BuildTopView(); + void setFocus(BView *focusView, bool notifyIputServer = false); - void drawAllViews(BView* aView); - void DoUpdate(BView* aView, BRect& area); + bool handleKeyDown(uint32 key, uint32 modifiers); - // Debug - void PrintToStream() const; -// END: OBOS addon functions + // message: B_MOUSE_UP, B_MOUSE_DOWN, B_MOUSE_MOVED + void sendMessageUsingEventMask(int32 message, BPoint where); + BView* sendMessageUsingEventMask2(BView* aView, int32 message, BPoint where); + void sendPulse(BView *view); + int32 findShortcut(uint32 key, uint32 modifiers); + bool findHandler(BView* start, BHandler* handler); + BView* findView(BView* aView, const char* viewName) const; + BView* findView(BView* aView, BPoint point) const; + BView* findView(BView* aView, int32 token); - // 3 deprecated calls - //void AddFloater(BWindow* a_floating_window); - //void RemoveFloater(BWindow* a_floating_window); - //window_type WindowType() const; + BView* findNextView(BView *focus, uint32 flags); + BView* findPrevView(BView *focus, uint32 flags); + BView* findLastChild(BView *parent); + bool handleKeyDown(const char key, uint32 modifiers); + void handleActivation( bool active); + void activateView(BView *aView, bool active); - char *fTitle; // used - int32 server_token; - bool fInTransaction; // used // changed from: char fInUpdate; - bool fActive; // used // changed from: char f_active; - short fShowLevel; // used - uint32 fFlags; // used + void drawAllViews(BView* aView); + void DoUpdate(BView* aView, BRect& area); - port_id send_port; // used - port_id receive_port; // used + // Debug + void PrintToStream() const; + + // 3 deprecated calls + //void AddFloater(BWindow* a_floating_window); + //void RemoveFloater(BWindow* a_floating_window); + //window_type WindowType() const; - BView *top_view; // used - BView *fFocus; // used - BView *fLastMouseMovedView; // used - void *a_session; // unused //changed from _BSession_ - BMenuBar *fKeyMenuBar; // used - BButton *fDefaultButton; // used - BList accelList; // used - int32 fTopViewToken; // // changed from: int32 top_view_token; - bool fPulseEnabled; // used // changed from: bool pulse_enabled; - bool fViewsNeedPulse; - bool fIsFilePanel; // used - bool fMaskActivated; - bigtime_t fPulseRate; // used // changed from: bigtime_t pulse_rate; - bool fWaitingForMenu; - bool fMinimized; // used // changed from: bool fOffscreen; - sem_id fMenuSem; - float fMaxZoomHeight; // used // changed from: float fMaxZoomH; - float fMaxZoomWidth; // used // changed from: float fMaxZoomV; - float fMinWindHeight; // used // changed from: float fMinWindH; - float fMinWindWidth; // used // changed from: float fMinWindV; - float fMaxWindHeight; // used // changed from: float fMaxWindH; - float fMaxWindWidth; // used // changed from: float fMaxWindV; - BRect fFrame; // used - window_look fLook; // used - ViewAttr *fCurDrawViewState; - window_feel fFeel; // used - int32 fLastViewToken; - BPortLink *fLink; // used // changed from: _CEventPort_* fEventPort; - BMessageRunner *fPulseRunner; // used - BRect fCurrentFrame; +private: + char *fTitle; + int32 server_token; // not yet used + bool fInTransaction; + bool fActive; + short fShowLevel; + uint32 fFlags; - uint32 _reserved[2]; // was 8 + port_id send_port; + port_id receive_port; + + BView *top_view; + BView *fFocus; + BView *fLastMouseMovedView; + void *a_session; // unusedm was _BSession_ + BMenuBar *fKeyMenuBar; + BButton *fDefaultButton; + BList accelList; + int32 fTopViewToken; + bool fPulseEnabled; + bool fViewsNeedPulse; // not yet used + bool fIsFilePanel; + bool fMaskActivated; + bigtime_t fPulseRate; + bool fWaitingForMenu; + bool fMinimized; + sem_id fMenuSem; + float fMaxZoomHeight; + float fMaxZoomWidth; + float fMinWindHeight; + float fMinWindWidth; + float fMaxWindHeight; + float fMaxWindWidth; + BRect fFrame; + window_look fLook; + ViewAttr *fCurDrawViewState; // not yet used + window_feel fFeel; + int32 fLastViewToken; + BPortLink *fLink; + BMessageRunner *fPulseRunner; + BRect fCurrentFrame; // not yet used + + uint32 _reserved[2]; // was 8 #if !_PR3_COMPATIBLE_ - uint32 _more_reserved[4]; + uint32 _more_reserved[4]; #endif }; -// inline definitions ---------------------------------------------------------- -inline void BWindow::Close() -{ - Quit(); -} -//------------------------------------------------------------------------------ - #endif // _WINDOW_H - -/* - * $Log $ - * - * $Id $ - * - */ - diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index e5690f2e19..1ec5a54986 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -242,6 +242,10 @@ BWindow::~BWindow() // disable pulsing SetPulseRate(0); + // tell app_server about our demise + fLink->StartMessage(AS_DELETE_WINDOW); + fLink->Flush(); + delete fLink; delete_port(receive_port); } @@ -328,10 +332,6 @@ BWindow::Quit() // ... also its children //detachTopView(); - STRACE(("Trying to stop connection...\n")); - // tell app_server, this window will finish execution - stopConnection(); - STRACE(("Connection stopped!\n")); if (fFlags & B_QUIT_ON_WINDOW_CLOSE) be_app->PostMessage(B_QUIT_REQUESTED); @@ -2385,16 +2385,6 @@ BWindow::BuildTopView() } -void -BWindow::stopConnection() -{ - Lock(); - fLink->StartMessage(AS_DELETE_WINDOW); - fLink->Flush(); - Unlock(); -} - - void BWindow::prepareView(BView *view) {