diff --git a/legacy/ecore/src/lib/ecore_wince/Ecore_WinCE.h b/legacy/ecore/src/lib/ecore_wince/Ecore_WinCE.h index bc6ae59ad4..1bb4ec4f7a 100644 --- a/legacy/ecore/src/lib/ecore_wince/Ecore_WinCE.h +++ b/legacy/ecore/src/lib/ecore_wince/Ecore_WinCE.h @@ -213,9 +213,19 @@ EAPI void ecore_wince_window_show(Ecore_WinCE_Window *window); EAPI void ecore_wince_window_hide(Ecore_WinCE_Window *window); -EAPI void ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(void)); + EAPI void ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(int), int backend); -EAPI void ecore_wince_window_resume_set(Ecore_WinCE_Window *window, int (*resume)(void)); +EAPI void ecore_wince_window_resume_set(Ecore_WinCE_Window *window, int (*resume)(int), int backend); + +EAPI void ecore_wince_window_geometry_get(Ecore_WinCE_Window *window, + int *x, + int *y, + int *width, + int *height); + +EAPI void ecore_wince_window_size_get(Ecore_WinCE_Window *window, + int *width, + int *height); EAPI void *ecore_wince_window_window_get(Ecore_WinCE_Window *window); diff --git a/legacy/ecore/src/lib/ecore_wince/ecore_wince_event.c b/legacy/ecore/src/lib/ecore_wince/ecore_wince_event.c index cea9799ad8..09ad6eba40 100644 --- a/legacy/ecore/src/lib/ecore_wince/ecore_wince_event.c +++ b/legacy/ecore/src/lib/ecore_wince/ecore_wince_event.c @@ -355,7 +355,7 @@ _ecore_wince_event_handle_focus_in(Ecore_WinCE_Callback_Data *msg) } if (window->resume) - window->resume(); + window->resume(window->backend); e->window = window; @@ -381,7 +381,7 @@ _ecore_wince_event_handle_focus_out(Ecore_WinCE_Callback_Data *msg) return; } if (window->suspend) - window->suspend(); + window->suspend(window->backend); e->window = window; diff --git a/legacy/ecore/src/lib/ecore_wince/ecore_wince_private.h b/legacy/ecore/src/lib/ecore_wince/ecore_wince_private.h index 04050331da..68aeed214c 100644 --- a/legacy/ecore/src/lib/ecore_wince/ecore_wince_private.h +++ b/legacy/ecore/src/lib/ecore_wince/ecore_wince_private.h @@ -24,14 +24,15 @@ struct _Ecore_WinCE_Callback_Data }; -typedef int (*ecore_wince_suspend) (void); -typedef int (*ecore_wince_resume) (void); +typedef int (*ecore_wince_suspend) (int); +typedef int (*ecore_wince_resume) (int); struct _Ecore_WinCE_Window { HWND window; + int backend; ecore_wince_suspend suspend; ecore_wince_resume resume; diff --git a/legacy/ecore/src/lib/ecore_wince/ecore_wince_window.c b/legacy/ecore/src/lib/ecore_wince/ecore_wince_window.c index e9b8b8f6a1..795917464c 100644 --- a/legacy/ecore/src/lib/ecore_wince/ecore_wince_window.c +++ b/legacy/ecore/src/lib/ecore_wince/ecore_wince_window.c @@ -138,7 +138,7 @@ ecore_wince_window_hide(Ecore_WinCE_Window *window) } void -ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(void)) +ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(int), int backend) { struct _Ecore_WinCE_Window *w; @@ -146,11 +146,12 @@ ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(void)) return; w = (struct _Ecore_WinCE_Window *)window; + w->backend = backend; w->suspend = suspend; } void -ecore_wince_window_resume_set(Ecore_WinCE_Window *window, int (*resume)(void)) +ecore_wince_window_resume_set(Ecore_WinCE_Window *window, int (*resume)(int), int backend) { struct _Ecore_WinCE_Window *w; @@ -158,9 +159,90 @@ ecore_wince_window_resume_set(Ecore_WinCE_Window *window, int (*resume)(void)) return; w = (struct _Ecore_WinCE_Window *)window; + w->backend = backend; w->resume = resume; } +void +ecore_wince_window_geometry_get(Ecore_WinCE_Window *window, + int *x, + int *y, + int *width, + int *height) +{ + RECT rect; + int w; + int h; + + printf ("ecore_wince_window_geometry_get %p\n", window); + if (!window) + { + if (x) *x = 0; + if (y) *y = 0; + if (width) *width = GetSystemMetrics(SM_CXSCREEN); + if (height) *height = GetSystemMetrics(SM_CYSCREEN); + + return; + } + + if (!GetClientRect(((struct _Ecore_WinCE_Window *)window)->window, + &rect)) + { + if (x) *x = 0; + if (y) *y = 0; + if (width) *width = 0; + if (height) *height = 0; + + return; + } + + w = rect.right - rect.left; + h = rect.bottom - rect.top; + + if (!GetWindowRect(((struct _Ecore_WinCE_Window *)window)->window, + &rect)) + { + if (x) *x = 0; + if (y) *y = 0; + if (width) *width = 0; + if (height) *height = 0; + + return; + } + + if (x) *x = rect.left; + if (y) *y = rect.top; + if (width) *width = w; + if (height) *height = h; +} + +void +ecore_wince_window_size_get(Ecore_WinCE_Window *window, + int *width, + int *height) +{ + RECT rect; + + printf ("ecore_wince_window_size_get %p\n", window); + if (!window) + { + if (width) *width = GetSystemMetrics(SM_CXSCREEN); + if (height) *height = GetSystemMetrics(SM_CYSCREEN); + + return; + } + + if (!GetClientRect(((struct _Ecore_WinCE_Window *)window)->window, + &rect)) + { + if (width) *width = 0; + if (height) *height = 0; + } + + if (width) *width = rect.right - rect.left; + if (height) *height = rect.bottom - rect.top; +} + void * ecore_wince_window_window_get(Ecore_WinCE_Window *window) {