From de662b01c8fc2e3e0eceb7f455e582d712b43f68 Mon Sep 17 00:00:00 2001 From: DarkWyrm Date: Sat, 28 Jun 2003 19:06:30 +0000 Subject: [PATCH] Window border movement fixes git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3718 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/server/ServerWindow.cpp | 21 ++++++++++++--------- src/servers/app/server/WinBorder.h | 1 + 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/servers/app/server/ServerWindow.cpp b/src/servers/app/server/ServerWindow.cpp index aa480d189b..9d47ce4167 100644 --- a/src/servers/app/server/ServerWindow.cpp +++ b/src/servers/app/server/ServerWindow.cpp @@ -41,7 +41,7 @@ #include "TokenHandler.h" #include "Utils.h" -#define DEBUG_SERVERWINDOW +//#define DEBUG_SERVERWINDOW //#define DEBUG_SERVERWINDOW_MOUSE //#define DEBUG_SERVERWINDOW_KEYBOARD @@ -52,6 +52,9 @@ //! Handler to get BWindow tokens from TokenHandler win_token_handler; +//! Active winborder - used for tracking windows during moves, resizes, and tab slides +WinBorder *active_winborder=NULL; + /*! \brief Contructor @@ -1185,7 +1188,7 @@ printf("ServerWindow::HandleMouseEvent unimplemented\n"); BPoint pt(x,y); // If we have clicked on a window, - _winborder=(WinBorder*)root->GetChildAt(pt); + active_winborder=_winborder=(WinBorder*)root->GetChildAt(pt); if(_winborder) { mousewin=_winborder->Window(); @@ -1208,8 +1211,11 @@ printf("ServerWindow::HandleMouseEvent unimplemented\n"); // int32 modifiers=*((int32*)index); BPoint pt(x,y); + set_is_sliding_tab(false); set_is_moving_window(false); + set_is_resizing_window(false); _winborder=(WinBorder*)root->GetChildAt(pt); + active_winborder=NULL; if(_winborder) { mousewin=_winborder->Window(); @@ -1231,23 +1237,20 @@ printf("ServerWindow::HandleMouseEvent unimplemented\n"); index+=sizeof(int64); float x=*((float*)index); index+=sizeof(float); float y=*((float*)index); index+=sizeof(float); -// uint32 buttons=*((uint32*)index); BPoint pt(x,y); - // TODO: Fix -/* if(is_moving_window() || is_resizing_window() || is_sliding_tab()) + if(is_moving_window() || is_resizing_window() || is_sliding_tab()) { - mousewin=active_serverwindow; - mousewin->_winborder->MouseMoved(pt,buttons,0); + active_winborder->MouseMoved(buffer); } else { -*/ _winborder=(WinBorder*)root->GetChildAt(pt); + _winborder=(WinBorder*)root->GetChildAt(pt); if(_winborder) { mousewin=_winborder->Window(); _winborder->MouseMoved(buffer); -// } + } } break; } diff --git a/src/servers/app/server/WinBorder.h b/src/servers/app/server/WinBorder.h index d5aaba1b8c..9e4a4a9664 100644 --- a/src/servers/app/server/WinBorder.h +++ b/src/servers/app/server/WinBorder.h @@ -77,6 +77,7 @@ void set_is_resizing_window(bool state); void set_active_winborder(WinBorder *win); WinBorder * get_active_winborder(void); void set_is_resizing_window(bool state); +void set_is_sliding_tab(bool state); bool is_sliding_tab(void); #endif