summaryrefslogtreecommitdiff
path: root/src/drivers/Android/Fl_Android_Window_Driver.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2018-06-21 11:54:32 +0000
committerMatthias Melcher <fltk@matthiasm.com>2018-06-21 11:54:32 +0000
commita119928455eaa84e87784e34b7b88935fecea4a2 (patch)
tree3e13c0cfaa3ea6cb327e6788cd8872246e5880f6 /src/drivers/Android/Fl_Android_Window_Driver.cxx
parent7911ae4279f8cf80e17b6b21eb54bbae9508fc55 (diff)
Android: Implemented window positioning and sizing
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12954 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/Android/Fl_Android_Window_Driver.cxx')
-rw-r--r--src/drivers/Android/Fl_Android_Window_Driver.cxx58
1 files changed, 41 insertions, 17 deletions
diff --git a/src/drivers/Android/Fl_Android_Window_Driver.cxx b/src/drivers/Android/Fl_Android_Window_Driver.cxx
index b9a11c3fe..02efb25dc 100644
--- a/src/drivers/Android/Fl_Android_Window_Driver.cxx
+++ b/src/drivers/Android/Fl_Android_Window_Driver.cxx
@@ -26,27 +26,13 @@
#include <FL/Fl_Window.H>
#include <FL/Fl_Overlay_Window.H>
#include <FL/platform.H>
+#include <math.h>
#include "Fl_Android_Window_Driver.H"
#include "Fl_Android_Screen_Driver.H"
#include "Fl_Android_Graphics_Driver.H"
#include "Fl_Android_Application.H"
-#if 0
-
-#include <windows.h>
-#include <math.h> // for ceil()
-
-#if USE_COLORMAP
-extern HPALETTE fl_select_palette(void); // in fl_color_win32.cxx
-#endif
-
-#endif
-
-
-Fl_Window *Fl_Android_Window_Driver::sCurrent = 0L;
-
-
Fl_Window_Driver *Fl_Window_Driver::newWindowDriver(Fl_Window *w)
{
return new Fl_Android_Window_Driver(w);
@@ -120,6 +106,44 @@ void Fl_Android_Window_Driver::make_current()
}
+void Fl_Android_Window_Driver::resize(int X,int Y,int W,int H)
+{
+ int is_a_resize = (W != w() || H != h() || is_a_rescale());
+ if (X != x() || Y != y() || is_a_rescale()) {
+ force_position(1);
+ } else {
+ if (!is_a_resize)
+ return;
+ }
+ if (is_a_resize) {
+ pWindow->Fl_Group::resize(X, Y, W, H);
+ if (visible_r()) {
+ pWindow->redraw();
+ // only wait for exposure if this window has a size - a window
+ // with no width or height will never get an exposure event
+ Fl_X *i = Fl_X::i(pWindow);
+ if (i && W > 0 && H > 0)
+ wait_for_expose_value = 1;
+ }
+ } else {
+ x(X);
+ y(Y);
+ }
+ if (shown()) {
+ if (!pWindow->resizable())
+ pWindow->size_range(w(), h(), w(), h());
+ // compute window position and size in scaled units
+// float s = Fl::screen_driver()->scale(screen_num());
+// int scaledX = ceil(X * s), scaledY = ceil(Y * s), scaledW = ceil(W * s), scaledH = ceil(H * s);
+// if (scaledW <= 0)
+// scaledW = 1;
+// if (scaledH <= 0)
+// scaledH = 1;
+// //SetWindowPos(fl_xid(pWindow), 0, scaledX, scaledY, scaledW, scaledH, flags);
+ expose_all();
+ }
+}
+
#if 0
Fl_WinAPI_Window_Driver::Fl_WinAPI_Window_Driver(Fl_Window *win)
@@ -601,7 +625,7 @@ void Fl_WinAPI_Window_Driver::unmap() {
ShowWindow(fl_xid(pWindow), SW_HIDE);
}
-#if !defined(FL_DOXYGEN) // FIXME - silence Doxygen warning
+#if !defined(FL_DOXYGEN)
void Fl_WinAPI_Window_Driver::make_fullscreen(int X, int Y, int W, int H) {
Fl_Window *w = pWindow;
@@ -638,7 +662,7 @@ void Fl_WinAPI_Window_Driver::make_fullscreen(int X, int Y, int W, int H) {
SetWindowPos(fl_xid(w), HWND_TOP, X*s, Y*s, W*s, H*s, SWP_NOSENDCHANGING | SWP_FRAMECHANGED);
}
-#endif // !defined(FL_DOXYGEN) // FIXME - silence Doxygen warning
+#endif // !defined(FL_DOXYGEN)
void Fl_WinAPI_Window_Driver::fullscreen_on() {