include/osl/detail/ios-bootstrap.h | 3 + ios/experimental/LibreOffice/LibreOffice/AppDelegate.m | 2 + ios/experimental/LibreOffice/LibreOffice/View.h | 2 + ios/experimental/LibreOffice/LibreOffice/View.m | 17 ++++++++++ vcl/ios/iosinst.cxx | 28 +++++++++++++++++ 5 files changed, 52 insertions(+)
New commits: commit da69a3ef5c395a3772a1c999aae5f172fc139d1e Author: p...@cloudon.com <p...@cloudon.com> Date: Wed Sep 11 16:25:04 2013 +0300 iOS experimental app support for selection marking via long press gesture Change-Id: Ib7a71797a2dc967f9d8ddd60fdc10c78201a87c8 Reviewed-on: https://gerrit.libreoffice.org/5911 Reviewed-by: Tor Lillqvist <t...@collabora.com> Tested-by: Tor Lillqvist <t...@collabora.com> diff --git a/include/osl/detail/ios-bootstrap.h b/include/osl/detail/ios-bootstrap.h index 42c38e4..0225c9a 100644 --- a/include/osl/detail/ios-bootstrap.h +++ b/include/osl/detail/ios-bootstrap.h @@ -41,6 +41,8 @@ extern "C" { /* 1) */ +typedef enum { DOWN, MOVE, UP} LOMouseButtonState; + void lo_damaged(CGRect rect); /* 2) */ @@ -51,6 +53,7 @@ void lo_render_windows(CGContextRef context, CGRect rect); void lo_tap(int x, int y); void lo_pan(int deltaX, int deltaY); void lo_zoom(int x, int y, float scale); +void lo_mouse_drag(int x, int y, LOMouseButtonState state); void lo_keyboard_input(int c); #ifdef __cplusplus diff --git a/ios/experimental/LibreOffice/LibreOffice/AppDelegate.m b/ios/experimental/LibreOffice/LibreOffice/AppDelegate.m index b0857ce..7e3a0a9 100644 --- a/ios/experimental/LibreOffice/LibreOffice/AppDelegate.m +++ b/ios/experimental/LibreOffice/LibreOffice/AppDelegate.m @@ -60,9 +60,11 @@ static View *theView; UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self.view action:@selector(tapGesture:)]; UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self.view action:@selector(panGesture:)]; + UILongPressGestureRecognizer * longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self.view action:@selector(longPressGesture:)]; [self.window addGestureRecognizer: tapRecognizer]; [self.window addGestureRecognizer: panRecognizer]; + [self.window addGestureRecognizer: longPressRecognizer]; NSLog(@"statusBarOrientation: %ld", (long) [[UIApplication sharedApplication] statusBarOrientation]); diff --git a/ios/experimental/LibreOffice/LibreOffice/View.h b/ios/experimental/LibreOffice/LibreOffice/View.h index 4abe2baa..7fd47d1 100644 --- a/ios/experimental/LibreOffice/LibreOffice/View.h +++ b/ios/experimental/LibreOffice/LibreOffice/View.h @@ -17,6 +17,8 @@ - (void)drawRect:(CGRect)rect; - (void)tapGesture:(UITapGestureRecognizer *)gestureRecognizer; - (void)panGesture:(UIPanGestureRecognizer *)gestureRecognizer; +- (void)longPressGesture:(UILongPressGestureRecognizer *)gestureRecognizer; + @end diff --git a/ios/experimental/LibreOffice/LibreOffice/View.m b/ios/experimental/LibreOffice/LibreOffice/View.m index 4e347a2..a047bb0 100644 --- a/ios/experimental/LibreOffice/LibreOffice/View.m +++ b/ios/experimental/LibreOffice/LibreOffice/View.m @@ -95,6 +95,23 @@ } } +- (void)longPressGesture:(UILongPressGestureRecognizer *)gestureRecognizer +{ + CGPoint point = [gestureRecognizer locationInView:self]; + + UIGestureRecognizerState state = gestureRecognizer.state; + + NSLog(@"longPressGesture: state %d cords (%d,%d)",state ,(int)point.x,(int)point.y); + + if (state == UIGestureRecognizerStateBegan) { + lo_mouse_drag(point.x, point.y, DOWN); + } else if (state == UIGestureRecognizerStateChanged) { + lo_mouse_drag(point.x, point.y, MOVE); + } else if (state == UIGestureRecognizerStateEnded) { + lo_mouse_drag(point.x, point.y, UP); + } +} + @end // vim:set shiftwidth=4 softtabstop=4 expandtab: diff --git a/vcl/ios/iosinst.cxx b/vcl/ios/iosinst.cxx index e7cec9f..3605288 100644 --- a/vcl/ios/iosinst.cxx +++ b/vcl/ios/iosinst.cxx @@ -426,6 +426,34 @@ void lo_tap(int x, int y) } extern "C" +void lo_mouse_drag(int x, int y, LOMouseButtonState state) +{ + SalFrame *pFocus = IosSalInstance::getInstance()->getFocusFrame(); + + if (pFocus) { + MouseEvent aEvent; + sal_uLong nEvent; + + switch(state) { + case DOWN: + aEvent = MouseEvent(Point(x, y), 1, MOUSE_SIMPLECLICK, MOUSE_LEFT); + nEvent = VCLEVENT_WINDOW_MOUSEBUTTONDOWN; + break; + case MOVE: + aEvent = MouseEvent(Point(x, y), 1, MOUSE_SIMPLEMOVE, MOUSE_LEFT); + nEvent = VCLEVENT_WINDOW_MOUSEMOVE; + break; + case UP: + aEvent = MouseEvent(Point(x, y), 1, MOUSE_SIMPLECLICK, MOUSE_LEFT); + nEvent = VCLEVENT_WINDOW_MOUSEBUTTONUP; + break; + } + + Application::PostMouseEvent(nEvent, pFocus->GetWindow(), &aEvent); + } +} + +extern "C" void lo_pan(int deltaX, int deltaY) { SalFrame *pFocus = IosSalInstance::getInstance()->getFocusFrame(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits