Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Letwory <nathan@letworyinteractive.com>2007-12-30 20:13:36 +0300
committerNathan Letwory <nathan@letworyinteractive.com>2007-12-30 20:13:36 +0300
commit93058ac3b3749eae4a595e66365946d112ee321d (patch)
tree349328dd930172663b2985e3b360cb7742a42a7d
parent1039bc26fb466e41cea11bb77ed7b3b2d335f594 (diff)
* handle WM_MOVE on win32 in GHOST
* change window move/size handling so that getWindowBounds gets x,y for window and getClientBounds gets w,h
-rw-r--r--intern/ghost/intern/GHOST_SystemWin32.cpp5
-rw-r--r--intern/ghost/intern/GHOST_WindowCarbon.cpp4
-rw-r--r--intern/ghost/intern/GHOST_WindowWin32.cpp1
-rw-r--r--source/blender/windowmanager/intern/wm_window.c12
4 files changed, 16 insertions, 6 deletions
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp
index 835f7da3038..5abaf78472e 100644
--- a/intern/ghost/intern/GHOST_SystemWin32.cpp
+++ b/intern/ghost/intern/GHOST_SystemWin32.cpp
@@ -750,6 +750,8 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam,
* message without calling DefWindowProc.
*/
event = processWindowEvent(GHOST_kEventWindowSize, window);
+ ::ValidateRect(hwnd, NULL);
+ break;
case WM_CAPTURECHANGED:
window->lostMouseCapture();
break;
@@ -772,6 +774,9 @@ LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam,
* to perform any move or size change processing during the WM_WINDOWPOSCHANGED
* message without calling DefWindowProc.
*/
+ event = processWindowEvent(GHOST_kEventWindowMove, window);
+ ::ValidateRect(hwnd, NULL);
+ break;
case WM_ERASEBKGND:
/* An application sends the WM_ERASEBKGND message when the window background must be
* erased (for example, when a window is resized). The message is sent to prepare an
diff --git a/intern/ghost/intern/GHOST_WindowCarbon.cpp b/intern/ghost/intern/GHOST_WindowCarbon.cpp
index 0473b16335a..7d6aded6f72 100644
--- a/intern/ghost/intern/GHOST_WindowCarbon.cpp
+++ b/intern/ghost/intern/GHOST_WindowCarbon.cpp
@@ -255,8 +255,8 @@ void GHOST_WindowCarbon::getClientBounds(GHOST_Rect& bounds) const
{
Rect rect;
GHOST_ASSERT(getValid(), "GHOST_WindowCarbon::getClientBounds(): window invalid")
-// ::GetPortBounds(m_grafPtr, &rect);
- ::GetWindowBounds(m_windowRef, kWindowContentRgn, &rect);
+ ::GetPortBounds(m_grafPtr, &rect);
+ //::GetWindowBounds(m_windowRef, kWindowContentRgn, &rect);
bounds.m_b = rect.bottom;
bounds.m_l = rect.left;
diff --git a/intern/ghost/intern/GHOST_WindowWin32.cpp b/intern/ghost/intern/GHOST_WindowWin32.cpp
index ef7294c2354..6f6e113dccd 100644
--- a/intern/ghost/intern/GHOST_WindowWin32.cpp
+++ b/intern/ghost/intern/GHOST_WindowWin32.cpp
@@ -293,6 +293,7 @@ void GHOST_WindowWin32::getClientBounds(GHOST_Rect& bounds) const
{
RECT rect;
::GetClientRect(m_hWnd, &rect);
+ //::GetWindowRect(m_hWnd, &rect);
bounds.m_b = rect.bottom;
bounds.m_l = rect.left;
bounds.m_r = rect.right;
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 16ed2e7b4e5..9ddf6fc078b 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -184,7 +184,7 @@ static void wm_window_open(wmWindowManager *wm, char *title, wmWindow *win)
inital_state = GHOST_kWindowStateMaximized;
else
inital_state = GHOST_kWindowStateNormal;
-
+
#ifdef __APPLE__
{
extern int macPrefState; /* creator.c */
@@ -371,19 +371,23 @@ int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private)
}
case GHOST_kEventWindowSize:
case GHOST_kEventWindowMove: {
- GHOST_RectangleHandle client_rect;
+ GHOST_RectangleHandle client_rect, window_rect;
int l, t, r, b, scr_w, scr_h;
+ int wl, wt, wr, wb;
+ window_rect = GHOST_GetWindowBounds(win->ghostwin);
client_rect= GHOST_GetClientBounds(win->ghostwin);
GHOST_GetRectangle(client_rect, &l, &t, &r, &b);
+ GHOST_GetRectangle(window_rect, &wl, &wt, &wr, &wb);
GHOST_DisposeRectangle(client_rect);
+ GHOST_DisposeRectangle(window_rect);
wm_get_screensize(&scr_w, &scr_h);
win->sizex= r-l;
win->sizey= b-t;
- win->posx= l;
- win->posy= scr_h - t - win->sizey;
+ win->posx= wl;
+ win->posy= scr_h - wt - win->sizey;
if(type!=GHOST_kEventWindowSize)
printf("win move event pos %d %d size %d %d\n", win->posx, win->posy, win->sizex, win->sizey);