changeset 1 | 7c90e6132015 |
parent 0 | dd21522fd290 |
child 5 | 10e98eab6f85 |
0:dd21522fd290 | 1:7c90e6132015 |
---|---|
136 } |
136 } |
137 |
137 |
138 |
138 |
139 |
139 |
140 // ----------------------------------------------------------------------------- |
140 // ----------------------------------------------------------------------------- |
141 // CWebKitView::NewL |
141 // WebView::NewL |
142 // Public Class Method |
142 // Public Class Method |
143 // Two-phased constructor. |
143 // Two-phased constructor. |
144 // ----------------------------------------------------------------------------- |
144 // ----------------------------------------------------------------------------- |
145 WebView* WebView::NewL( |
145 WebView* WebView::NewL( CCoeControl& parent, CBrCtl* brctl ) |
146 CCoeControl& parent, CBrCtl* brctl ) |
|
147 { |
146 { |
148 WebView* self = new (ELeave) WebView( brctl ); |
147 WebView* self = new (ELeave) WebView( brctl ); |
149 |
148 |
150 CleanupStack::PushL( self ); |
149 CleanupStack::PushL( self ); |
151 self->ConstructL( parent ); |
150 self->ConstructL( parent ); |
153 |
152 |
154 return self; |
153 return self; |
155 } |
154 } |
156 |
155 |
157 // ----------------------------------------------------------------------------- |
156 // ----------------------------------------------------------------------------- |
158 // CWebKitView::CWebKitView |
157 // WebView::CWebKitView |
159 // Private Class Method |
158 // Private Class Method |
160 // C++ default constructor can NOT contain any code, that might leave. |
159 // C++ default constructor can NOT contain any code, that might leave. |
161 // ----------------------------------------------------------------------------- |
160 // ----------------------------------------------------------------------------- |
162 WebView::WebView( CBrCtl* brctl ) : |
161 WebView::WebView( CBrCtl* brctl ) : |
163 m_brctl(brctl) |
162 m_brctl(brctl) |
164 , m_isEditable(false) |
163 , m_isEditable(false) |
165 , m_currentEventKey(KNullKeyEvent) |
164 , m_currentEventKey(KNullKeyEvent) |
165 , m_currentEventCode(EEventNull) |
|
166 , m_scrollingSpeed(KNormalScrollRange*KZoomLevelDefaultValue/100) |
166 , m_scrollingSpeed(KNormalScrollRange*KZoomLevelDefaultValue/100) |
167 , m_focusedElementType(TBrCtlDefs::EElementNone) |
167 , m_focusedElementType(TBrCtlDefs::EElementNone) |
168 , m_pageScaler(NULL) |
168 , m_pageScaler(NULL) |
169 , m_pageScalerEnabled(false) |
169 , m_pageScalerEnabled(false) |
170 , m_inFindState(false) |
170 , m_inFindState(false) |
230 delete m_userAgent; |
230 delete m_userAgent; |
231 delete m_pageFullScreenHandler; |
231 delete m_pageFullScreenHandler; |
232 } |
232 } |
233 |
233 |
234 // ----------------------------------------------------------------------------- |
234 // ----------------------------------------------------------------------------- |
235 // CWebKitView::ConstructL |
235 // WebView::ConstructL |
236 // Private Class Method |
236 // Private Class Method |
237 // Symbian 2nd phase constructor can leave. |
237 // Symbian 2nd phase constructor can leave. |
238 // ----------------------------------------------------------------------------- |
238 // ----------------------------------------------------------------------------- |
239 void WebView::ConstructL( |
239 void WebView::ConstructL( CCoeControl& parent ) |
240 CCoeControl& parent) |
|
241 { |
240 { |
242 SetContainerWindowL(parent); |
241 SetContainerWindowL(parent); |
243 |
242 |
244 CCoeControl::MakeVisible(ETrue); |
243 CCoeControl::MakeVisible(ETrue); |
245 |
244 |
358 { |
357 { |
359 CCoeEnv::Static()->SimulateKeyEventL(m_keyevent, m_eventcode); |
358 CCoeEnv::Static()->SimulateKeyEventL(m_keyevent, m_eventcode); |
360 } |
359 } |
361 |
360 |
362 //------------------------------------------------------------------------------- |
361 //------------------------------------------------------------------------------- |
363 // Draw ( from CCoeControl ) |
362 // WebView::Draw ( from CCoeControl ) |
364 // BitBlts the offscreen bitmap to the GraphicsContext |
363 // BitBlts the offscreen bitmap to the GraphicsContext |
365 //------------------------------------------------------------------------------- |
364 //------------------------------------------------------------------------------- |
366 void WebView::Draw( |
365 void WebView::Draw( const TRect& rect ) const |
367 const TRect& rect ) const |
|
368 { |
366 { |
369 if (m_pluginFullscreen) return; |
367 if (m_pluginFullscreen) return; |
370 |
368 |
371 CWindowGc& gc = SystemGc(); |
369 CWindowGc& gc = SystemGc(); |
372 CEikBorderedControl::Draw( rect ); |
370 CEikBorderedControl::Draw( rect ); |
435 return NULL; |
433 return NULL; |
436 return kit(m_page->mainFrame()); |
434 return kit(m_page->mainFrame()); |
437 } |
435 } |
438 |
436 |
439 //------------------------------------------------------------------------------- |
437 //------------------------------------------------------------------------------- |
440 // SyncRepaint |
438 // WebView::syncRepaint |
441 // Repaint the given rectangle synchronously |
439 // Repaint the given rectangle synchronously |
442 //------------------------------------------------------------------------------- |
440 //------------------------------------------------------------------------------- |
443 void WebView::syncRepaint( |
441 void WebView::syncRepaint( const TRect& rect) |
444 const TRect& rect) |
|
445 { |
442 { |
446 m_repaints.AddRect( rect ); |
443 m_repaints.AddRect( rect ); |
447 syncRepaint(); |
444 syncRepaint(); |
448 } |
445 } |
449 |
446 |
528 |
525 |
529 rect.Move(-p); |
526 rect.Move(-p); |
530 |
527 |
531 // draw to back buffer |
528 // draw to back buffer |
532 |
529 |
533 |
530 |
534 if(!( m_widgetextension && m_widgetextension->IsWidgetPublising())) { |
531 if(!( m_widgetextension && m_widgetextension->IsWidgetPublising())) { |
535 mainFrame()->frameView()->draw( *m_webcorecontext, rect ); |
532 mainFrame()->frameView()->draw( *m_webcorecontext, rect ); |
536 if ( zoomLevel < m_minZoomLevel ) zoomLevel = m_minZoomLevel; |
533 if ( zoomLevel < m_minZoomLevel ) zoomLevel = m_minZoomLevel; |
537 zoomLevelChanged( zoomLevel ); |
534 zoomLevelChanged( zoomLevel ); |
538 } |
535 } |
539 } |
536 } |
540 //------------------------------------------------------------------------------- |
537 //------------------------------------------------------------------------------- |
541 // SyncRepaint |
538 // WebView::syncRepaint |
542 // Repaint the current repaint region synchronously and clear it |
539 // Repaint the current repaint region synchronously and clear it |
543 //------------------------------------------------------------------------------- |
540 //------------------------------------------------------------------------------- |
544 void WebView::syncRepaint() |
541 void WebView::syncRepaint() |
545 { |
542 { |
546 if (m_pageScaler && m_pageScaler->FullScreenMode()) { |
543 if (m_pageScaler && m_pageScaler->FullScreenMode()) { |
611 static_cast<WebView*>(ptr)->doRepaint(); |
608 static_cast<WebView*>(ptr)->doRepaint(); |
612 return EFalse; |
609 return EFalse; |
613 } |
610 } |
614 |
611 |
615 //------------------------------------------------------------------------------- |
612 //------------------------------------------------------------------------------- |
616 // DoRepaint |
613 // WebView::doRepaint |
617 // Perform a scheduled repaint |
614 // Perform a scheduled repaint |
618 //------------------------------------------------------------------------------- |
615 //------------------------------------------------------------------------------- |
619 void WebView::doRepaint() |
616 void WebView::doRepaint() |
620 { |
617 { |
621 // the timer must always be canceled here! |
618 // the timer must always be canceled here! |
629 syncRepaint( ); |
626 syncRepaint( ); |
630 } |
627 } |
631 } |
628 } |
632 |
629 |
633 //------------------------------------------------------------------------------- |
630 //------------------------------------------------------------------------------- |
634 // CollectOffscreenbitmap |
631 // WebView::collectOffscreenbitmap |
635 // Get offscreen bitmap |
632 // Get offscreen bitmap |
636 //------------------------------------------------------------------------------- |
633 //------------------------------------------------------------------------------- |
637 void WebView::collectOffscreenbitmapL(CFbsBitmap& snapshot) |
634 void WebView::collectOffscreenbitmapL(CFbsBitmap& snapshot) |
638 { |
635 { |
639 |
636 |
640 (snapshot).Create(m_brctl->Size(), StaticObjectsContainer::instance()->webSurface()->displayMode()); |
637 (snapshot).Create(m_brctl->Size(), StaticObjectsContainer::instance()->webSurface()->displayMode()); |
641 |
638 |
642 CFbsBitmapDevice* device = CFbsBitmapDevice::NewL( &snapshot); |
639 CFbsBitmapDevice* device = CFbsBitmapDevice::NewL( &snapshot); |
643 CleanupStack::PushL(device); |
640 CleanupStack::PushL(device); |
644 |
641 |
650 CleanupStack::PopAndDestroy(2); |
647 CleanupStack::PopAndDestroy(2); |
651 |
648 |
652 } |
649 } |
653 |
650 |
654 //------------------------------------------------------------------------------- |
651 //------------------------------------------------------------------------------- |
655 // ScheduleRepaint |
652 // WebView::scheduleRepaint |
656 // Schedule an asynchronous repaint |
653 // Schedule an asynchronous repaint |
657 //------------------------------------------------------------------------------- |
654 //------------------------------------------------------------------------------- |
658 void WebView::scheduleRepaint( |
655 void WebView::scheduleRepaint( |
659 const TRect& rect ) |
656 const TRect& rect ) |
660 { |
657 { |
665 // Draw the miniview |
662 // Draw the miniview |
666 m_brctl->brCtlLayoutObserver()->NotifyLayoutChange(EOriginTopLeft); |
663 m_brctl->brCtlLayoutObserver()->NotifyLayoutChange(EOriginTopLeft); |
667 #endif |
664 #endif |
668 } |
665 } |
669 // if we are active, we'll repaint when timer fires |
666 // if we are active, we'll repaint when timer fires |
670 if( !m_repainttimer->IsActive() && !m_pageZoomHandler->isActive() && |
667 if( !m_repainttimer->IsActive() && !m_pageZoomHandler->isActive() && |
671 m_allowRepaints) { |
668 m_allowRepaints) { |
672 // no timer yet, repaint immediatly (but asynchronously) |
669 // no timer yet, repaint immediatly (but asynchronously) |
673 m_repainttimer->Start( 0, 0, TCallBack( &doRepaintCb, this ) ); |
670 m_repainttimer->Start( 0, 0, TCallBack( &doRepaintCb, this ) ); |
674 } |
671 } |
675 } |
672 } |
788 if ( m_webFormFillPopup && m_webFormFillPopup->IsVisible()) rv = m_webFormFillPopup; |
785 if ( m_webFormFillPopup && m_webFormFillPopup->IsVisible()) rv = m_webFormFillPopup; |
789 |
786 |
790 return rv; |
787 return rv; |
791 } |
788 } |
792 |
789 |
790 bool WebView::isNaviKey(const TKeyEvent& keyevent) |
|
791 { |
|
792 return ( keyevent.iCode == EKeyUpArrow // North |
|
793 || keyevent.iCode == EKeyRightUpArrow // Northeast |
|
794 || keyevent.iCode == EStdKeyDevice11 // : Extra KeyEvent supports diagonal event simulator wedge |
|
795 || keyevent.iCode == EKeyRightArrow // East |
|
796 || keyevent.iCode == EKeyRightDownArrow // Southeast |
|
797 || keyevent.iCode == EStdKeyDevice12 // : Extra KeyEvent supports diagonal event simulator wedge |
|
798 || keyevent.iCode == EKeyDownArrow // South |
|
799 || keyevent.iCode == EKeyLeftDownArrow // Southwest |
|
800 || keyevent.iCode == EStdKeyDevice13 // : Extra KeyEvent supports diagonal event simulator wedge |
|
801 || keyevent.iCode == EKeyLeftArrow // West |
|
802 || keyevent.iCode == EKeyLeftUpArrow // Northwest |
|
803 || keyevent.iCode == EStdKeyDevice10); |
|
804 } |
|
805 |
|
806 bool WebView::handleEditable(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame ) |
|
807 { |
|
808 bool consumed = false; |
|
809 consumed = frame->eventHandler()->keyEvent(PlatformKeyboardEvent(keyevent,eventcode)); |
|
810 // exit input on up/down key |
|
811 // EXCEPT on touch-enabled devices. We'll just consume in that case |
|
812 if ( !consumed && isNaviKey(keyevent) ) { |
|
813 if (m_webfeptexteditor->validateTextFormat() ) { |
|
814 setFocusNone(); |
|
815 } |
|
816 else { |
|
817 consumed = true; |
|
818 } |
|
819 } |
|
820 |
|
821 return consumed; |
|
822 } |
|
823 |
|
824 |
|
825 bool WebView::handleEventKeyDown(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) |
|
826 { |
|
827 m_currentEventKey = keyevent; |
|
828 m_currentEventCode = eventcode; |
|
829 return false; // not consumed |
|
830 } |
|
831 |
|
832 |
|
833 void WebView::sendMouseEventToEngine(TPointerEvent::TType eventType, TPoint pos, Frame* frame) |
|
834 { |
|
835 TPointerEvent event; |
|
836 event.iPosition = pos; |
|
837 event.iModifiers = 0; |
|
838 event.iType = eventType; |
|
839 |
|
840 switch (eventType) { |
|
841 case TPointerEvent::EButton1Down: |
|
842 { |
|
843 frame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(event)); |
|
844 break; |
|
845 } |
|
846 |
|
847 case TPointerEvent::EButton1Up: |
|
848 { |
|
849 frame->eventHandler()->handleMouseReleaseEvent(PlatformMouseEvent(event)); |
|
850 break; |
|
851 } |
|
852 |
|
853 case TPointerEvent::EMove: |
|
854 { |
|
855 frame->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event)); |
|
856 break; |
|
857 } |
|
858 }; |
|
859 } |
|
860 |
|
861 |
|
862 void WebView::setFocusedNode(Frame* frame) |
|
863 { |
|
864 Node* node = frame->eventHandler()->mousePressNode(); |
|
865 for (Node* n = node; n; n = n->parentNode()) { |
|
866 if ( n->isFocusable() ) { |
|
867 page()->focusController()->setFocusedNode(n, frame); |
|
868 } |
|
869 } |
|
870 } |
|
871 |
|
872 bool WebView::handleEventKeyL(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) |
|
873 { |
|
874 WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); |
|
875 bool consumed = false; |
|
876 |
|
877 TKeyEvent oldKeyEvent(m_currentEventKey); |
|
878 bool downEventConsumed = false; |
|
879 if (m_currentEventCode == EEventKeyDown && |
|
880 keyevent.iCode != EKeyDevice3 ){ |
|
881 sendKeyEventToEngine(oldKeyEvent, EEventKeyDown, frame); |
|
882 } |
|
883 m_currentEventKey = keyevent; |
|
884 m_currentEventCode = eventcode; |
|
885 if (keyevent.iCode == EKeyDevice3) { |
|
886 // pass it to webcore |
|
887 sendMouseEventToEngine(TPointerEvent::EButton1Down, |
|
888 cursor->position(), frame); |
|
889 |
|
890 // mimic ccb's behavior of onFocus |
|
891 setFocusedNode(frame); |
|
892 |
|
893 // Toolbar is activated on long key press only if the element |
|
894 // type is EElementNone during EEventKeyDown and EEventKey. |
|
895 // This prevents toolbar from popping up in DHTML pages. Also, |
|
896 // toolbar is activated when the user is not in fast scroll |
|
897 // mode, or in page overview mode, or on wml page. |
|
898 if ( ( m_focusedElementType == TBrCtlDefs::EElementNone || |
|
899 m_focusedElementType == TBrCtlDefs::EElementBrokenImage ) && |
|
900 keyevent.iRepeats && !m_brctl->wmlMode() ) { |
|
901 launchToolBarL(); |
|
902 } |
|
903 consumed = true; |
|
904 } |
|
905 else if (isNaviKey(keyevent)) { |
|
906 if (m_brctl->settings()->getTabbedNavigation()) { |
|
907 consumed = downEventConsumed || handleTabbedNavigation(keyevent, eventcode); |
|
908 } |
|
909 else { |
|
910 consumed = handleKeyNavigation(keyevent, eventcode, frame); |
|
911 } |
|
912 } // if (m_brctl->settings()->getTabbedNavigation() |
|
913 else { // Not an arrow key.. |
|
914 // activate hovered input element by just start typing |
|
915 consumed = handleInputElement(keyevent, eventcode, frame); |
|
916 } |
|
917 |
|
918 if (!consumed) { |
|
919 consumed = sendKeyEventToEngine(keyevent, eventcode, frame); |
|
920 } |
|
921 return consumed; |
|
922 } |
|
923 |
|
924 |
|
925 bool WebView::handleInputElement(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) |
|
926 { |
|
927 WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); |
|
928 if (m_focusedElementType == TBrCtlDefs::EElementInputBox || |
|
929 m_focusedElementType == TBrCtlDefs::EElementSelectBox || |
|
930 m_focusedElementType == TBrCtlDefs::EElementSelectMultiBox || |
|
931 m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) { |
|
932 |
|
933 sendMouseEventToEngine(TPointerEvent::EButton1Down, cursor->position(), frame); |
|
934 sendMouseEventToEngine(TPointerEvent::EButton1Up, cursor->position(), frame); |
|
935 |
|
936 if (m_focusedElementType == TBrCtlDefs::EElementInputBox || |
|
937 m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) { |
|
938 if (!m_fepTimer) { |
|
939 m_fepTimer = new WebCore::Timer<WebView>(this, &WebView::fepTimerFired); |
|
940 } |
|
941 |
|
942 m_fepTimer->startOneShot(0.2f); |
|
943 setEditable(true); |
|
944 } |
|
945 m_keyevent = keyevent; |
|
946 m_eventcode = eventcode; |
|
947 } |
|
948 return true; |
|
949 } |
|
950 |
|
951 |
|
952 bool WebView::handleKeyNavigation(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) |
|
953 { |
|
954 WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); |
|
955 bool consumed = false; |
|
956 bool fastscroll(m_fastScrollTimer->IsActive()); |
|
957 |
|
958 // start fast scrolling |
|
959 m_showCursor = true; |
|
960 if (!cursor->isVisible()) { |
|
961 cursor->cursorUpdate(true); |
|
962 } |
|
963 |
|
964 m_savedPosition = mainFrame()->frameView()->contentPos(); |
|
965 cursor->scrollAndMoveCursor(keyevent.iCode, m_scrollingSpeed, fastscroll); |
|
966 updateScrollbars(); |
|
967 if (!fastscroll) { |
|
968 m_fastScrollTimer->Start(KCursorInitialDelay,KCursorUpdateFrquency,TCallBack(&scrollTimerCb,this)); |
|
969 m_scrollingStartTime.HomeTime(); |
|
970 } |
|
971 |
|
972 // and minimap comes on |
|
973 consumed = handleMinimapNavigation(); |
|
974 |
|
975 if (!fastscroll) { |
|
976 sendMouseEventToEngine(TPointerEvent::EMove, cursor->position(), frame); |
|
977 } |
|
978 |
|
979 consumed = true; |
|
980 return consumed; |
|
981 } |
|
982 |
|
983 |
|
984 bool WebView::handleMinimapNavigation() |
|
985 { |
|
986 int scrollingTime = millisecondsScrolled(); |
|
987 if (!AknLayoutUtils::PenEnabled() && m_pageScalerEnabled && |
|
988 m_pageScaler && !isSmallPage() && |
|
989 m_brctl->settings()->brctlSetting(TBrCtlDefs::ESettingsPageOverview) && |
|
990 (scrollingTime > KPanningPageScalerStart || m_pageScaler->Visible())) { |
|
991 m_pageScaler->SetVisibleUntil(KScalerVisibilityTime); |
|
992 } |
|
993 return true; |
|
994 } |
|
995 |
|
996 bool WebView::handleTabbedNavigation(const TKeyEvent& keyevent, TEventCode eventcode) |
|
997 { |
|
998 int horizontal = 0; |
|
999 int vertical = 0; |
|
1000 switch(keyevent.iCode) { |
|
1001 case EKeyUpArrow: // North |
|
1002 vertical = -1; |
|
1003 break; |
|
1004 |
|
1005 case EKeyRightUpArrow: // Northeast |
|
1006 case EStdKeyDevice11: // : Extra KeyEvent supports diagonal event simulator wedge |
|
1007 vertical = -1; |
|
1008 horizontal = +1; |
|
1009 break; |
|
1010 |
|
1011 case EKeyRightArrow: // East |
|
1012 horizontal = +1; |
|
1013 break; |
|
1014 |
|
1015 case EKeyRightDownArrow: // Southeast |
|
1016 case EStdKeyDevice12: // : Extra KeyEvent supports diagonal event simulator wedge |
|
1017 vertical = +1; |
|
1018 horizontal = +1; |
|
1019 break; |
|
1020 |
|
1021 case EKeyDownArrow: // South |
|
1022 vertical = +1; |
|
1023 break; |
|
1024 |
|
1025 case EKeyLeftDownArrow: // Southwest |
|
1026 case EStdKeyDevice13: // : Extra KeyEvent supports diagonal event simulator wedge |
|
1027 vertical = +1; |
|
1028 horizontal = -1; |
|
1029 break; |
|
1030 |
|
1031 case EKeyLeftArrow: // West |
|
1032 horizontal = -1; |
|
1033 break; |
|
1034 |
|
1035 case EKeyLeftUpArrow: // Northwest |
|
1036 case EStdKeyDevice10: // : Extra KeyEvent supports diagonal event simulator wedge |
|
1037 vertical = -1; |
|
1038 horizontal = -1; |
|
1039 break; |
|
1040 |
|
1041 default: // (Should never get here) |
|
1042 break; |
|
1043 |
|
1044 } |
|
1045 return m_tabbedNavigation->navigate(horizontal, vertical); |
|
1046 } |
|
1047 |
|
1048 |
|
1049 bool WebView::handleEventKeyUp(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) |
|
1050 { |
|
1051 bool consumed = false; |
|
1052 TInt delay = 2 * KCursorInitialDelay; |
|
1053 WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); |
|
1054 m_fastScrollTimer->Cancel(); |
|
1055 m_scrollingSpeed = KNormalScrollRange*100/scalingFactor(); |
|
1056 |
|
1057 if (viewIsFastScrolling()) { |
|
1058 setViewIsFastScrolling(false); |
|
1059 sendMouseEventToEngine(TPointerEvent::EMove, cursor->position(), frame); |
|
1060 toggleRepaintTimer(true); |
|
1061 if (!inPageViewMode()) { |
|
1062 delay = 0; |
|
1063 } |
|
1064 } |
|
1065 m_pageScrollHandler->scrollbarDrawer()->fadeScrollbar(delay); |
|
1066 |
|
1067 if ( (keyevent.iScanCode == EStdKeyDevice3) || |
|
1068 (keyevent.iScanCode == EStdKeyEnter) ) { |
|
1069 // pass it to webcore |
|
1070 |
|
1071 if (m_focusedElementType == TBrCtlDefs::EElementInputBox || |
|
1072 m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) { |
|
1073 setEditable(true); |
|
1074 } |
|
1075 sendMouseEventToEngine(TPointerEvent::EButton1Up, cursor->position(), frame); |
|
1076 consumed = true; |
|
1077 } |
|
1078 if (!consumed) { |
|
1079 sendKeyEventToEngine(keyevent, eventcode, frame); |
|
1080 } |
|
1081 m_currentEventKey = KNullKeyEvent; |
|
1082 m_currentEventCode = EEventNull; |
|
1083 return consumed; |
|
1084 } |
|
1085 |
|
1086 |
|
1087 bool WebView::sendKeyEventToEngine(const TKeyEvent& keyevent, |
|
1088 TEventCode eventcode, Frame* frame) |
|
1089 { |
|
1090 bool consumed = frame->eventHandler()->keyEvent(PlatformKeyboardEvent(keyevent,eventcode)); |
|
1091 |
|
1092 if (!consumed && eventcode == EEventKey && |
|
1093 (m_brctl->capabilities() & TBrCtlDefs::ECapabilityAccessKeys)) { |
|
1094 |
|
1095 TKeyEvent ke = keyevent; |
|
1096 TChar c(ke.iCode); |
|
1097 // Not consumed by WebCore, is alphanumeric and does not have any modifier |
|
1098 if (c.IsAlphaDigit() && |
|
1099 !(ke.iModifiers & (EModifierCtrl | EModifierAlt | EModifierShift))) { |
|
1100 ke.iModifiers = EModifierCtrl; |
|
1101 frame->eventHandler()->keyEvent(PlatformKeyboardEvent(ke,EEventKeyDown)); |
|
1102 consumed = true; |
|
1103 } |
|
1104 } |
|
1105 return consumed; |
|
1106 } |
|
1107 |
|
1108 |
|
793 TKeyResponse WebView::OfferKeyEventL(const TKeyEvent& keyevent, TEventCode eventcode ) |
1109 TKeyResponse WebView::OfferKeyEventL(const TKeyEvent& keyevent, TEventCode eventcode ) |
794 { |
1110 { |
795 WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); |
1111 WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); |
796 //hijack |
1112 //hijack |
797 if (isSynchRequestPending()) { |
1113 if (isSynchRequestPending()) { |
804 return m_popupDrawer->handleOfferKeyEventL(keyevent, eventcode ); |
1120 return m_popupDrawer->handleOfferKeyEventL(keyevent, eventcode ); |
805 |
1121 |
806 if ( m_webFormFillPopup && m_webFormFillPopup->IsVisible() && AknLayoutUtils::PenEnabled() ) { |
1122 if ( m_webFormFillPopup && m_webFormFillPopup->IsVisible() && AknLayoutUtils::PenEnabled() ) { |
807 if (EKeyWasConsumed == m_webFormFillPopup->HandleKeyEventL(keyevent, eventcode)) { |
1123 if (EKeyWasConsumed == m_webFormFillPopup->HandleKeyEventL(keyevent, eventcode)) { |
808 return EKeyWasConsumed; |
1124 return EKeyWasConsumed; |
809 } |
1125 } |
810 } |
1126 } |
811 |
1127 |
812 bool consumed = false; |
1128 bool consumed = false; |
813 Frame* coreFrame = core(mainFrame()); |
1129 Frame* coreFrame = core(mainFrame()); |
814 if (!coreFrame) |
1130 if (!coreFrame) |
815 return EKeyWasNotConsumed; |
1131 return EKeyWasNotConsumed; |
816 |
|
817 coreFrame = page()->focusController()->focusedOrMainFrame(); |
1132 coreFrame = page()->focusController()->focusedOrMainFrame(); |
818 |
1133 |
819 // edit events |
1134 // edit events |
820 if (m_isEditable) { |
1135 if (m_isEditable) { |
821 consumed = page()->focusController()->focusedOrMainFrame()->eventHandler()->keyEvent(PlatformKeyboardEvent(keyevent,eventcode)); |
1136 consumed = handleEditable(keyevent, eventcode, coreFrame); |
822 // exit input on up/down key |
|
823 // EXCEPT on touch-enabled devices. We'll just consume in that case |
|
824 if ( !consumed |
|
825 && ( keyevent.iCode == EKeyUpArrow // North |
|
826 || keyevent.iCode == EKeyRightUpArrow // Northeast |
|
827 || keyevent.iCode == EStdKeyDevice11 // : Extra KeyEvent supports diagonal event simulator wedge |
|
828 || keyevent.iCode == EKeyRightArrow // East |
|
829 || keyevent.iCode == EKeyRightDownArrow // Southeast |
|
830 || keyevent.iCode == EStdKeyDevice12 // : Extra KeyEvent supports diagonal event simulator wedge |
|
831 || keyevent.iCode == EKeyDownArrow // South |
|
832 || keyevent.iCode == EKeyLeftDownArrow // Southwest |
|
833 || keyevent.iCode == EStdKeyDevice13 // : Extra KeyEvent supports diagonal event simulator wedge |
|
834 || keyevent.iCode == EKeyLeftArrow // West |
|
835 || keyevent.iCode == EKeyLeftUpArrow // Northwest |
|
836 || keyevent.iCode == EStdKeyDevice10 ) ) // : Extra KeyEvent supports diagonal event simulator wedge |
|
837 { |
|
838 if (m_webfeptexteditor->validateTextFormat() ) { |
|
839 setFocusNone(); |
|
840 } else { |
|
841 consumed = true; |
|
842 } |
|
843 } |
|
844 } |
1137 } |
845 |
1138 |
846 // scroll events |
1139 // scroll events |
847 if (!consumed) { |
1140 if (!consumed) { |
848 switch( eventcode ) { |
1141 switch( eventcode ) { |
849 case EEventKeyDown: |
1142 case EEventKeyDown: |
850 m_currentEventKey = keyevent; |
1143 handleEventKeyDown(keyevent, eventcode, coreFrame); |
851 //page()->mainFrame()->setFocusedNodeIfNeeded(); |
|
852 //coreFrame->eventHandler()->mousePressNode()->focus(); |
|
853 |
|
854 break; |
1144 break; |
855 case EEventKey: |
1145 case EEventKey: |
856 if (keyevent.iScanCode != m_currentEventKey.iScanCode ) return EKeyWasNotConsumed; |
1146 if (keyevent.iScanCode != m_currentEventKey.iScanCode ) return EKeyWasNotConsumed; |
857 // |
1147 consumed = handleEventKeyL(keyevent, eventcode, coreFrame); |
858 m_currentEventKey = keyevent; |
|
859 if (keyevent.iCode == EKeyDevice3) { |
|
860 // pass it to webcore |
|
861 TPointerEvent event; |
|
862 event.iPosition = StaticObjectsContainer::instance()->webCursor()->position(); |
|
863 event.iModifiers = 0; |
|
864 event.iType = TPointerEvent::EButton1Down ; |
|
865 coreFrame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(event)); |
|
866 |
|
867 // mimic ccb's behavior of onFocus |
|
868 Node* node = page()->focusController()->focusedOrMainFrame()->eventHandler()->mousePressNode(); |
|
869 for (Node* n = node; n; n = n->parentNode()) { |
|
870 if ( n->isFocusable() ) { |
|
871 page()->focusController()->setFocusedNode(n, page()->focusController()->focusedOrMainFrame()); |
|
872 } |
|
873 } |
|
874 |
|
875 // Toolbar is activated on long key press only if the element |
|
876 // type is EElementNone during EEventKeyDown and EEventKey. |
|
877 // This prevents toolbar from popping up in DHTML pages. Also, |
|
878 // toolbar is activated when the user is not in fast scroll |
|
879 // mode, or in page overview mode, or on wml page. |
|
880 if ( ( m_focusedElementType == TBrCtlDefs::EElementNone || |
|
881 m_focusedElementType == TBrCtlDefs::EElementBrokenImage ) && |
|
882 keyevent.iRepeats && !m_brctl->wmlMode() ) |
|
883 { |
|
884 launchToolBarL(); |
|
885 } |
|
886 consumed = true; |
|
887 } else if ( keyevent.iCode == EKeyUpArrow // North |
|
888 || keyevent.iCode == EKeyRightUpArrow // Northeast |
|
889 || keyevent.iCode == EStdKeyDevice11 // : Extra KeyEvent supports diagonal event simulator wedge |
|
890 || keyevent.iCode == EKeyRightArrow // East |
|
891 || keyevent.iCode == EKeyRightDownArrow // Southeast |
|
892 || keyevent.iCode == EStdKeyDevice12 // : Extra KeyEvent supports diagonal event simulator wedge |
|
893 || keyevent.iCode == EKeyDownArrow // South |
|
894 || keyevent.iCode == EKeyLeftDownArrow // Southwest |
|
895 || keyevent.iCode == EStdKeyDevice13 // : Extra KeyEvent supports diagonal event simulator wedge |
|
896 || keyevent.iCode == EKeyLeftArrow // West |
|
897 || keyevent.iCode == EKeyLeftUpArrow // Northwest |
|
898 || keyevent.iCode == EStdKeyDevice10 ) // : Extra KeyEvent supports diagonal event simulator wedge |
|
899 { |
|
900 if (m_brctl->settings()->getTabbedNavigation()) { |
|
901 int horizontal = 0; |
|
902 int vertical = 0; |
|
903 switch(keyevent.iCode) |
|
904 { |
|
905 case EKeyUpArrow: // North |
|
906 vertical = -1; |
|
907 break; |
|
908 |
|
909 case EKeyRightUpArrow: // Northeast |
|
910 case EStdKeyDevice11: // : Extra KeyEvent supports diagonal event simulator wedge |
|
911 vertical = -1; |
|
912 horizontal = +1; |
|
913 break; |
|
914 |
|
915 case EKeyRightArrow: // East |
|
916 horizontal = +1; |
|
917 break; |
|
918 |
|
919 case EKeyRightDownArrow: // Southeast |
|
920 case EStdKeyDevice12: // : Extra KeyEvent supports diagonal event simulator wedge |
|
921 vertical = +1; |
|
922 horizontal = +1; |
|
923 break; |
|
924 |
|
925 case EKeyDownArrow: // South |
|
926 vertical = +1; |
|
927 break; |
|
928 |
|
929 case EKeyLeftDownArrow: // Southwest |
|
930 case EStdKeyDevice13: // : Extra KeyEvent supports diagonal event simulator wedge |
|
931 vertical = +1; |
|
932 horizontal = -1; |
|
933 break; |
|
934 |
|
935 case EKeyLeftArrow: // West |
|
936 horizontal = -1; |
|
937 break; |
|
938 |
|
939 case EKeyLeftUpArrow: // Northwest |
|
940 case EStdKeyDevice10: // : Extra KeyEvent supports diagonal event simulator wedge |
|
941 vertical = -1; |
|
942 horizontal = -1; |
|
943 break; |
|
944 |
|
945 default: // (Should never get here) |
|
946 break; |
|
947 |
|
948 } |
|
949 |
|
950 consumed = m_tabbedNavigation->navigate(horizontal, vertical); |
|
951 } |
|
952 else { |
|
953 // start fast scrolling |
|
954 m_showCursor = true; |
|
955 if (!cursor->isVisible()) { |
|
956 cursor->cursorUpdate(true); |
|
957 } |
|
958 bool fastscroll(m_fastScrollTimer->IsActive()); |
|
959 m_savedPosition = mainFrame()->frameView()->contentPos(); |
|
960 cursor->scrollAndMoveCursor(keyevent.iCode, m_scrollingSpeed, fastscroll); |
|
961 if (!fastscroll) { |
|
962 m_fastScrollTimer->Start(KCursorInitialDelay,KCursorUpdateFrquency,TCallBack(&scrollTimerCb,this)); |
|
963 m_scrollingStartTime.HomeTime(); |
|
964 } |
|
965 // and minimap comes on |
|
966 int scrollingTime = millisecondsScrolled(); |
|
967 if (!AknLayoutUtils::PenEnabled() && m_pageScalerEnabled && m_pageScaler && !isSmallPage() && |
|
968 m_brctl->settings()->brctlSetting(TBrCtlDefs::ESettingsPageOverview) && |
|
969 (scrollingTime > KPanningPageScalerStart || m_pageScaler->Visible())) { |
|
970 m_pageScaler->SetVisibleUntil(KScalerVisibilityTime); |
|
971 } |
|
972 // |
|
973 if (!fastscroll) { |
|
974 TPointerEvent event; |
|
975 event.iPosition = cursor->position(); |
|
976 event.iModifiers = 0; |
|
977 event.iType = TPointerEvent::EMove; |
|
978 coreFrame->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event)); |
|
979 } |
|
980 consumed = true; |
|
981 } // if (m_brctl->settings()->getTabbedNavigation() |
|
982 } else { |
|
983 // activate hovered input element by just start typing |
|
984 if (m_focusedElementType == TBrCtlDefs::EElementInputBox || m_focusedElementType == TBrCtlDefs::EElementSelectBox |
|
985 || m_focusedElementType == TBrCtlDefs::EElementSelectMultiBox || m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) { |
|
986 TPointerEvent event; |
|
987 event.iModifiers = 0; |
|
988 event.iPosition = cursor->position(); |
|
989 event.iType = TPointerEvent::EButton1Down ; |
|
990 coreFrame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(event)); |
|
991 event.iType = TPointerEvent::EButton1Up; |
|
992 coreFrame->eventHandler()->handleMouseReleaseEvent(PlatformMouseEvent(event)); |
|
993 |
|
994 |
|
995 if (m_focusedElementType == TBrCtlDefs::EElementInputBox || m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) { |
|
996 if (!m_fepTimer) |
|
997 m_fepTimer = new WebCore::Timer<WebView>(this, &WebView::fepTimerFired); |
|
998 |
|
999 m_fepTimer->startOneShot(0.2f); |
|
1000 setEditable(true); |
|
1001 } |
|
1002 m_keyevent = keyevent; |
|
1003 m_eventcode = eventcode; |
|
1004 |
|
1005 consumed = true; |
|
1006 } |
|
1007 } |
|
1008 break; |
1148 break; |
1009 case EEventKeyUp: |
1149 case EEventKeyUp: |
1010 m_fastScrollTimer->Cancel(); |
1150 consumed = handleEventKeyUp(keyevent, eventcode, coreFrame); |
1011 m_scrollingSpeed = KNormalScrollRange*100/scalingFactor(); |
|
1012 |
|
1013 if (viewIsFastScrolling()) { |
|
1014 setViewIsFastScrolling(false); |
|
1015 toggleRepaintTimer(true); |
|
1016 if (AknLayoutUtils::PenEnabled() && !inPageViewMode()) { |
|
1017 m_pageScrollHandler->scrollbarDrawer()->fadeScrollbar(); |
|
1018 } |
|
1019 } |
|
1020 m_currentEventKey = KNullKeyEvent; |
|
1021 if ( (keyevent.iScanCode == EStdKeyDevice3) || (keyevent.iScanCode == EStdKeyEnter) ){ |
|
1022 // pass it to webcore |
|
1023 TPointerEvent event; |
|
1024 if (m_focusedElementType == TBrCtlDefs::EElementInputBox || |
|
1025 m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) |
|
1026 { |
|
1027 setEditable(true); |
|
1028 } |
|
1029 event.iPosition = cursor->position(); |
|
1030 event.iType = TPointerEvent::EButton1Up; |
|
1031 coreFrame->eventHandler()->handleMouseReleaseEvent(PlatformMouseEvent(event)); |
|
1032 consumed = true; |
|
1033 } |
|
1034 break; |
1151 break; |
1035 } |
1152 } |
1036 } |
1153 } |
1037 |
1154 |
1038 // keyevents |
1155 return (consumed) ? EKeyWasConsumed : EKeyWasNotConsumed; |
1039 if (!consumed) { |
|
1040 consumed = coreFrame->eventHandler()->keyEvent(PlatformKeyboardEvent(keyevent,eventcode)); |
|
1041 if (!consumed && eventcode == EEventKey && (m_brctl->capabilities() & TBrCtlDefs::ECapabilityAccessKeys)) { |
|
1042 TKeyEvent ke = keyevent; |
|
1043 TChar c(ke.iCode); |
|
1044 // Not consumed by WebCore, is alphanumeric and does not have any modifier |
|
1045 if (c.IsAlphaDigit() && !(ke.iModifiers & (EModifierCtrl | EModifierAlt | EModifierShift))) { |
|
1046 ke.iModifiers = EModifierCtrl; |
|
1047 coreFrame->eventHandler()->keyEvent(PlatformKeyboardEvent(ke,EEventKeyDown)); |
|
1048 consumed = true; |
|
1049 } |
|
1050 } |
|
1051 } |
|
1052 |
|
1053 //setEditable(); |
|
1054 |
|
1055 return (consumed)?EKeyWasConsumed:EKeyWasNotConsumed; |
|
1056 } |
1156 } |
1057 |
1157 |
1058 |
1158 |
1059 void WebView::updateScrollbars(int documentHeight, int displayPosY, int documentWidth, int displayPosX) |
1159 void WebView::updateScrollbars(int documentHeight, int displayPosY, int documentWidth, int displayPosX) |
1060 { |
1160 { |
1061 m_brctl->updateScrollbars((documentHeight * scalingFactor()) / 100, Rect().Height(), |
1161 m_brctl->updateScrollbars((documentHeight * scalingFactor()) / 100, Rect().Height(), |
1062 (displayPosY * scalingFactor()) / 100, (documentWidth * scalingFactor()) / 100, Rect().Width(), |
1162 (displayPosY * scalingFactor()) / 100, (documentWidth * scalingFactor()) / 100, Rect().Width(), |
1063 (displayPosX * scalingFactor()) / 100); |
1163 (displayPosX * scalingFactor()) / 100); |
1164 } |
|
1165 void WebView::updateScrollbars() |
|
1166 { |
|
1167 TPoint scrollDelta = mainFrame()->frameView()->contentPos() - m_savedPosition; |
|
1168 scrollDelta.iX *= 100; |
|
1169 scrollDelta.iY *= 100; |
|
1170 if (!inPageViewMode()) { |
|
1171 if (scrollDelta.iX == 0 && scrollDelta.iY == 0) { |
|
1172 m_pageScrollHandler->scrollbarDrawer()->drawScrollbar(this); |
|
1173 } |
|
1174 else { |
|
1175 m_pageScrollHandler->scrollbarDrawer()->drawScrollbar(this, scrollDelta); |
|
1176 } |
|
1177 } |
|
1064 } |
1178 } |
1065 |
1179 |
1066 void WebView::openPageViewL() |
1180 void WebView::openPageViewL() |
1067 { |
1181 { |
1068 // don't show pageview if we are in lite mode |
1182 // don't show pageview if we are in lite mode |
1098 closePageView(); |
1212 closePageView(); |
1099 } |
1213 } |
1100 } |
1214 } |
1101 |
1215 |
1102 //------------------------------------------------------------------------------- |
1216 //------------------------------------------------------------------------------- |
1103 // launchToolBarL |
1217 // WebView::launchToolBarL |
1104 //------------------------------------------------------------------------------- |
1218 //------------------------------------------------------------------------------- |
1105 void WebView::launchToolBarL() |
1219 void WebView::launchToolBarL() |
1106 { |
1220 { |
1107 if ( AknLayoutUtils::PenEnabled() || m_brctl->wmlMode() ) { |
1221 if ( AknLayoutUtils::PenEnabled() || m_brctl->wmlMode() ) { |
1108 return; |
1222 return; |
1133 m_brctl->reportStateChanged(TBrCtlDefs::EStateToolBarMode, ETrue); |
1247 m_brctl->reportStateChanged(TBrCtlDefs::EStateToolBarMode, ETrue); |
1134 |
1248 |
1135 } |
1249 } |
1136 |
1250 |
1137 //------------------------------------------------------------------------------- |
1251 //------------------------------------------------------------------------------- |
1138 // closeToolBarL |
1252 // WebView::closeToolBarL |
1139 //------------------------------------------------------------------------------- |
1253 //------------------------------------------------------------------------------- |
1140 void WebView::closeToolBarL() |
1254 void WebView::closeToolBarL() |
1141 { |
1255 { |
1142 delete m_toolbar; |
1256 delete m_toolbar; |
1143 m_toolbar = 0; |
1257 m_toolbar = 0; |
1153 |
1267 |
1154 m_brctl->reportStateChanged(TBrCtlDefs::EStateToolBarMode, EFalse); |
1268 m_brctl->reportStateChanged(TBrCtlDefs::EStateToolBarMode, EFalse); |
1155 } |
1269 } |
1156 |
1270 |
1157 //------------------------------------------------------------------------------- |
1271 //------------------------------------------------------------------------------- |
1158 // DrawDocumentPart ( from MPageScalerCallback ) |
1272 // WebView::DrawDocumentPart ( from MPageScalerCallback ) |
1159 // |
1273 // |
1160 // |
1274 // |
1161 //------------------------------------------------------------------------------- |
1275 //------------------------------------------------------------------------------- |
1162 void WebView::DrawDocumentPart( |
1276 void WebView::DrawDocumentPart( |
1163 CFbsBitGc& aGc, |
1277 CFbsBitGc& aGc, |
1184 delete wcgc; |
1298 delete wcgc; |
1185 } |
1299 } |
1186 } |
1300 } |
1187 |
1301 |
1188 //------------------------------------------------------------------------------- |
1302 //------------------------------------------------------------------------------- |
1189 // DocumentViewport ( from MPageScalerCallback ) |
1303 // WebView::DocumentViewport ( from MPageScalerCallback ) |
1190 // |
1304 // |
1191 // |
1305 // |
1192 //------------------------------------------------------------------------------- |
1306 //------------------------------------------------------------------------------- |
1193 TRect WebView::DocumentViewport() |
1307 TRect WebView::DocumentViewport() |
1194 { |
1308 { |
1195 return mainFrame()->frameView()->toViewCoords(mainFrame()->frameView()->visibleRect()); |
1309 return mainFrame()->frameView()->toViewCoords(mainFrame()->frameView()->visibleRect()); |
1196 } |
1310 } |
1197 |
1311 |
1198 //------------------------------------------------------------------------------- |
1312 //------------------------------------------------------------------------------- |
1199 // ScaledPageChanged ( from MPageScalerCallback ) |
1313 // WebView::ScaledPageChanged ( from MPageScalerCallback ) |
1200 // |
1314 // |
1201 // |
1315 // |
1202 //------------------------------------------------------------------------------- |
1316 //------------------------------------------------------------------------------- |
1203 void WebView::ScaledPageChanged( |
1317 void WebView::ScaledPageChanged( |
1204 const TRect& aRect, |
1318 const TRect& aRect, |
1222 // ignore err since we will use the default image |
1336 // ignore err since we will use the default image |
1223 } |
1337 } |
1224 } |
1338 } |
1225 |
1339 |
1226 //------------------------------------------------------------------------------- |
1340 //------------------------------------------------------------------------------- |
1227 // DocumentSize ( from MPageScalerCallback ) |
1341 // WebView::DocumentSize ( from MPageScalerCallback ) |
1228 // |
1342 // |
1229 // |
1343 // |
1230 //------------------------------------------------------------------------------- |
1344 //------------------------------------------------------------------------------- |
1231 TSize WebView::DocumentSize() |
1345 TSize WebView::DocumentSize() |
1232 { |
1346 { |
1233 return mainFrame()->frameView()->toViewCoords(mainFrame()->frameView()->contentSize()); |
1347 return mainFrame()->frameView()->toViewCoords(mainFrame()->frameView()->contentSize()); |
1234 } |
1348 } |
1235 |
1349 |
1236 //------------------------------------------------------------------------------- |
1350 //------------------------------------------------------------------------------- |
1237 // TouchScrolling ( from MPageScalerCallback ) |
1351 // WebView::TouchScrolling ( from MPageScalerCallback ) |
1238 // |
1352 // |
1239 // |
1353 // |
1240 //------------------------------------------------------------------------------- |
1354 //------------------------------------------------------------------------------- |
1241 TBool WebView::TouchScrolling() |
1355 TBool WebView::TouchScrolling() |
1242 { |
1356 { |
1429 int milli = millisecondsScrolled(); |
1543 int milli = millisecondsScrolled(); |
1430 setViewIsFastScrolling(true); |
1544 setViewIsFastScrolling(true); |
1431 toggleRepaintTimer(false); |
1545 toggleRepaintTimer(false); |
1432 m_scrollingSpeed = milli>=KPanningMaxTime ? KPanningMaxSpeed : KPanningStartSpeed+(KPanningMaxSpeed-KPanningStartSpeed)*Max(milli-KPanningStartTime,0)/KPanningMaxTime; |
1546 m_scrollingSpeed = milli>=KPanningMaxTime ? KPanningMaxSpeed : KPanningStartSpeed+(KPanningMaxSpeed-KPanningStartSpeed)*Max(milli-KPanningStartTime,0)/KPanningMaxTime; |
1433 m_scrollingSpeed = m_scrollingSpeed*100/scalingFactor(); |
1547 m_scrollingSpeed = m_scrollingSpeed*100/scalingFactor(); |
1434 TPoint scrollDelta = mainFrame()->frameView()->contentPos() - m_savedPosition; |
|
1435 scrollDelta.iX *= 100; |
|
1436 scrollDelta.iY *= 100; |
|
1437 if (AknLayoutUtils::PenEnabled() && !inPageViewMode()) { |
|
1438 m_pageScrollHandler->scrollbarDrawer()->drawScrollbar(this, scrollDelta); |
|
1439 } |
|
1440 OfferKeyEventL(m_currentEventKey, EEventKey); |
1548 OfferKeyEventL(m_currentEventKey, EEventKey); |
1441 } |
1549 } |
1442 |
1550 |
1443 int WebView::millisecondsScrolled() const |
1551 int WebView::millisecondsScrolled() const |
1444 { |
1552 { |
1472 |
1580 |
1473 int WebView::searchAgain(bool forward) |
1581 int WebView::searchAgain(bool forward) |
1474 { |
1582 { |
1475 if (!m_findKeyword) { |
1583 if (!m_findKeyword) { |
1476 WebFrame* frame = mainFrame()->findFrameWithSelection(); |
1584 WebFrame* frame = mainFrame()->findFrameWithSelection(); |
1477 if(frame) { |
1585 if (frame) { |
1478 frame->clearSelection(); |
1586 frame->clearSelection(); |
1479 } |
1587 } |
1480 return TBrCtlDefs::EFindNoMatches; |
1588 return TBrCtlDefs::EFindNoMatches; |
1481 } |
1589 } |
1482 return search(*m_findKeyword, forward, true); |
1590 return search(*m_findKeyword, forward, true); |
1483 } |
1591 } |
1484 |
1592 |
1515 if (frame != startFrame) |
1623 if (frame != startFrame) |
1516 startFrame->clearSelection(); |
1624 startFrame->clearSelection(); |
1517 return TBrCtlDefs::EFindMatch; |
1625 return TBrCtlDefs::EFindMatch; |
1518 } |
1626 } |
1519 if (onlyOneFrame) { |
1627 if (onlyOneFrame) { |
1520 startFrame->clearSelection(); |
1628 startFrame->clearSelection(); |
1521 return TBrCtlDefs::EFindNoMatches; |
1629 return TBrCtlDefs::EFindNoMatches; |
1522 } |
1630 } |
1523 frame = nextFrame; |
1631 frame = nextFrame; |
1524 } while (frame && frame != startFrame); |
1632 } while (frame && frame != startFrame); |
1525 |
1633 |
1531 if (wrapFlag && lastFrame) { |
1639 if (wrapFlag && lastFrame) { |
1532 if (frame->bridge()->searchFor(keyword, forward, false, true, false)) |
1640 if (frame->bridge()->searchFor(keyword, forward, false, true, false)) |
1533 return TBrCtlDefs::EFindMatch; |
1641 return TBrCtlDefs::EFindMatch; |
1534 } |
1642 } |
1535 |
1643 |
1536 if(frame) { |
1644 if (frame) { |
1537 frame->clearSelection(); |
1645 frame->clearSelection(); |
1538 } |
1646 } |
1539 return TBrCtlDefs::EFindNoMatches; |
1647 return TBrCtlDefs::EFindNoMatches; |
1540 } |
1648 } |
1541 |
1649 |
1542 void WebView::exitFindState() |
1650 void WebView::exitFindState() |
1543 { |
1651 { |
1562 } |
1670 } |
1563 } |
1671 } |
1564 |
1672 |
1565 |
1673 |
1566 //------------------------------------------------------------------------------- |
1674 //------------------------------------------------------------------------------- |
1567 // HandlePointerBufferReadyL |
1675 // WebView::HandlePointerBufferReadyL |
1568 // Handles Pointer Move Events |
1676 // Handles pointer move events |
1569 //------------------------------------------------------------------------------- |
1677 //------------------------------------------------------------------------------- |
1570 void WebView::HandlePointerBufferReadyL() |
1678 void WebView::HandlePointerBufferReadyL() |
1571 { |
1679 { |
1572 memset(m_ptrbuffer,0,256*sizeof(TPoint)); |
1680 memset(m_ptrbuffer,0,256*sizeof(TPoint)); |
1573 TPtr8 ptr((TUint8 *)m_ptrbuffer,256*sizeof(TPoint)); |
1681 TPtr8 ptr((TUint8 *)m_ptrbuffer,256*sizeof(TPoint)); |
1581 m_webpointerEventHandler->HandlePointerEventL(pe); |
1689 m_webpointerEventHandler->HandlePointerEventL(pe); |
1582 } |
1690 } |
1583 } |
1691 } |
1584 |
1692 |
1585 //------------------------------------------------------------------------------- |
1693 //------------------------------------------------------------------------------- |
1586 // HandlePointerEventL |
1694 // WebView::HandlePointerEventL |
1587 // Handles Pointer Events |
1695 // Handles pointer events |
1588 //------------------------------------------------------------------------------- |
1696 //------------------------------------------------------------------------------- |
1589 void WebView::HandlePointerEventL(const TPointerEvent& aPointerEvent) |
1697 void WebView::HandlePointerEventL(const TPointerEvent& aPointerEvent) |
1590 { |
1698 { |
1591 m_webpointerEventHandler->HandlePointerEventL(aPointerEvent); |
1699 m_webpointerEventHandler->HandlePointerEventL(aPointerEvent); |
1592 } |
1700 } |
1600 } |
1708 } |
1601 } |
1709 } |
1602 } |
1710 } |
1603 |
1711 |
1604 //------------------------------------------------------------------------------- |
1712 //------------------------------------------------------------------------------- |
1605 // HandleShowAnchorHref() |
1713 // WebView::handleShowAnchorHrefL |
1606 // Display a popup with the url of an anchor |
1714 // Display a popup with the url of an anchor |
1607 //------------------------------------------------------------------------------- |
1715 //------------------------------------------------------------------------------- |
1608 void WebView::handleShowAnchorHrefL() |
1716 void WebView::handleShowAnchorHrefL() |
1609 { |
1717 { |
1610 HBufC* url = NULL; |
1718 HBufC* url = NULL; |
1637 |
1745 |
1638 CleanupStack::PopAndDestroy(); // url |
1746 CleanupStack::PopAndDestroy(); // url |
1639 } |
1747 } |
1640 |
1748 |
1641 //------------------------------------------------------------------------------- |
1749 //------------------------------------------------------------------------------- |
1642 // FocusedImageLC() |
1750 // WebView::focusedImageLC |
1643 // Return the image that is under the cursor |
1751 // Return the image that is under the cursor |
1644 //------------------------------------------------------------------------------- |
1752 //------------------------------------------------------------------------------- |
1645 TBrCtlImageCarrier* WebView::focusedImageLC() |
1753 TBrCtlImageCarrier* WebView::focusedImageLC() |
1646 { |
1754 { |
1647 if (m_focusedElementType != TBrCtlDefs::EElementImageBox && m_focusedElementType != TBrCtlDefs::EElementAreaBox) { |
1755 if (m_focusedElementType != TBrCtlDefs::EElementImageBox && m_focusedElementType != TBrCtlDefs::EElementAreaBox) { |
1652 CleanupStack::PushL(imageCarrier); |
1760 CleanupStack::PushL(imageCarrier); |
1653 return imageCarrier; |
1761 return imageCarrier; |
1654 } |
1762 } |
1655 |
1763 |
1656 //------------------------------------------------------------------------------- |
1764 //------------------------------------------------------------------------------- |
1657 // LoadFocusedImageL() |
1765 // WebView::loadFocusedImageL |
1658 // Load the image that is under the cursor |
1766 // Load the image that is under the cursor |
1659 //------------------------------------------------------------------------------- |
1767 //------------------------------------------------------------------------------- |
1660 void WebView::loadFocusedImageL() |
1768 void WebView::loadFocusedImageL() |
1661 { |
1769 { |
1662 // Ensure cursor is on a broken image and image loading is disabled |
1770 // Ensure cursor is on a broken image and image loading is disabled |
1665 } |
1773 } |
1666 loadFocusedImage(this); |
1774 loadFocusedImage(this); |
1667 } |
1775 } |
1668 |
1776 |
1669 //------------------------------------------------------------------------------- |
1777 //------------------------------------------------------------------------------- |
1670 // RemovePopup() |
1778 // WebView::removePopup |
1671 // Delete the popupDrawer |
1779 // Delete the popupDrawer |
1672 //------------------------------------------------------------------------------- |
1780 //------------------------------------------------------------------------------- |
1673 void WebView::removePopup() |
1781 void WebView::removePopup() |
1674 { |
1782 { |
1675 if (m_popupDrawer) { |
1783 if (m_popupDrawer) { |
1678 DrawNow(); |
1786 DrawNow(); |
1679 } |
1787 } |
1680 } |
1788 } |
1681 |
1789 |
1682 //------------------------------------------------------------------------------- |
1790 //------------------------------------------------------------------------------- |
1791 // WebView::zoomLevels |
|
1683 //------------------------------------------------------------------------------- |
1792 //------------------------------------------------------------------------------- |
1684 RArray<TUint>* WebView::zoomLevels() |
1793 RArray<TUint>* WebView::zoomLevels() |
1685 { |
1794 { |
1686 return &m_zoomLevelArray; |
1795 return &m_zoomLevelArray; |
1687 } |
1796 } |
1688 |
1797 |
1689 //------------------------------------------------------------------------------- |
1798 //------------------------------------------------------------------------------- |
1799 // WebView::setZoomLevel |
|
1690 //------------------------------------------------------------------------------- |
1800 //------------------------------------------------------------------------------- |
1691 void WebView::setZoomLevel(int zoomLevel) |
1801 void WebView::setZoomLevel(int zoomLevel) |
1692 { |
1802 { |
1693 m_dirtyZoomMode = false; |
1803 m_dirtyZoomMode = false; |
1694 if (zoomLevel < KZoomLevelMinValue || |
1804 if (zoomLevel < KZoomLevelMinValue || |
1697 return; |
1807 return; |
1698 zoomLevelChanged(zoomLevel); |
1808 zoomLevelChanged(zoomLevel); |
1699 } |
1809 } |
1700 |
1810 |
1701 //------------------------------------------------------------------------------- |
1811 //------------------------------------------------------------------------------- |
1812 // WebView::setBitmapZoomLevel |
|
1702 //------------------------------------------------------------------------------- |
1813 //------------------------------------------------------------------------------- |
1703 void WebView::setBitmapZoomLevel(int zoomLevel) |
1814 void WebView::setBitmapZoomLevel(int zoomLevel) |
1704 { |
1815 { |
1705 m_zoomLevelChangedByUser = true; |
1816 m_zoomLevelChangedByUser = true; |
1706 WebFrameView* view = mainFrame()->frameView(); |
1817 WebFrameView* view = mainFrame()->frameView(); |
1753 |
1864 |
1754 DrawNow(); |
1865 DrawNow(); |
1755 } |
1866 } |
1756 |
1867 |
1757 //------------------------------------------------------------------------------- |
1868 //------------------------------------------------------------------------------- |
1869 // WebView::restoreZoomLevel |
|
1758 //------------------------------------------------------------------------------- |
1870 //------------------------------------------------------------------------------- |
1759 void WebView::restoreZoomLevel(int zoomLevel) |
1871 void WebView::restoreZoomLevel(int zoomLevel) |
1760 { |
1872 { |
1761 m_dirtyZoomMode = false; |
1873 m_dirtyZoomMode = false; |
1762 clearOffScreenBitmap(); |
1874 clearOffScreenBitmap(); |
1766 mainFrame()->makeVisiblePlugins(true); |
1878 mainFrame()->makeVisiblePlugins(true); |
1767 m_isPluginsVisible = true; |
1879 m_isPluginsVisible = true; |
1768 } |
1880 } |
1769 |
1881 |
1770 //------------------------------------------------------------------------------- |
1882 //------------------------------------------------------------------------------- |
1883 // WebView::resetZoomLevel |
|
1771 //------------------------------------------------------------------------------- |
1884 //------------------------------------------------------------------------------- |
1772 void WebView::resetZoomLevel(void) |
1885 void WebView::resetZoomLevel(void) |
1773 { |
1886 { |
1774 if( m_widgetextension && m_widgetextension->IsWidgetPublising()) { |
1887 if( m_widgetextension && m_widgetextension->IsWidgetPublising()) { |
1775 return ; |
1888 return ; |
1810 mainFrame()->frameView()->setRect(mainFrame()->frameView()->toDocCoords(Rect())); |
1923 mainFrame()->frameView()->setRect(mainFrame()->frameView()->toDocCoords(Rect())); |
1811 m_startZoomLevel = m_currentZoomLevel; |
1924 m_startZoomLevel = m_currentZoomLevel; |
1812 } |
1925 } |
1813 |
1926 |
1814 //------------------------------------------------------------------------------- |
1927 //------------------------------------------------------------------------------- |
1928 // WebView::updateMinZoomLevel |
|
1815 //------------------------------------------------------------------------------- |
1929 //------------------------------------------------------------------------------- |
1816 void WebView::updateMinZoomLevel(TSize size) |
1930 void WebView::updateMinZoomLevel(TSize size) |
1817 { |
1931 { |
1818 int newMinZoomLevel; |
1932 int newMinZoomLevel; |
1819 if (size.iWidth && size.iHeight) { |
1933 if (size.iWidth && size.iHeight) { |
1856 } |
1970 } |
1857 } //endof if (m_minZoomLevel != newMinZoomLevel) |
1971 } //endof if (m_minZoomLevel != newMinZoomLevel) |
1858 } |
1972 } |
1859 |
1973 |
1860 //------------------------------------------------------------------------------- |
1974 //------------------------------------------------------------------------------- |
1975 // WebView::UpdateZoomArray |
|
1861 //------------------------------------------------------------------------------- |
1976 //------------------------------------------------------------------------------- |
1862 void WebView::UpdateZoomArray() |
1977 void WebView::UpdateZoomArray() |
1863 { |
1978 { |
1864 //only for non-touch device |
1979 //only for non-touch device |
1865 if (m_pageZoomHandler->isActive()) |
1980 if (m_pageZoomHandler->isActive()) |
1891 } |
2006 } |
1892 |
2007 |
1893 } |
2008 } |
1894 |
2009 |
1895 //------------------------------------------------------------------------------- |
2010 //------------------------------------------------------------------------------- |
2011 // WebView::zoomLevelChanged |
|
1896 //------------------------------------------------------------------------------- |
2012 //------------------------------------------------------------------------------- |
1897 void WebView::zoomLevelChanged(int newZoomLevel) |
2013 void WebView::zoomLevelChanged(int newZoomLevel) |
1898 { |
2014 { |
1899 int currZoomLevel = m_startZoomLevel; |
2015 int currZoomLevel = m_startZoomLevel; |
1900 m_dirtyZoomMode = false; |
2016 m_dirtyZoomMode = false; |
1962 int zoomLevel = m_brctl->historyHandler()->historyController()->currentEntryZoomLevel(); |
2078 int zoomLevel = m_brctl->historyHandler()->historyController()->currentEntryZoomLevel(); |
1963 if (zoomLevel != m_currentZoomLevel) m_brctl->historyHandler()->historyController()->updateCurrentEntryZoomLevelIfNeeded(); |
2079 if (zoomLevel != m_currentZoomLevel) m_brctl->historyHandler()->historyController()->updateCurrentEntryZoomLevelIfNeeded(); |
1964 } |
2080 } |
1965 |
2081 |
1966 //------------------------------------------------------------------------------- |
2082 //------------------------------------------------------------------------------- |
2083 // WebView:::resetLastZoomLevelIfNeeded |
|
1967 //------------------------------------------------------------------------------- |
2084 //------------------------------------------------------------------------------- |
1968 void WebView::resetLastZoomLevelIfNeeded() |
2085 void WebView::resetLastZoomLevelIfNeeded() |
1969 { |
2086 { |
1970 if (m_lastZoomLevel == m_maxZoomLevel) |
2087 if (m_lastZoomLevel == m_maxZoomLevel) |
1971 m_lastZoomLevel = 100; |
2088 m_lastZoomLevel = 100; |
1972 } |
2089 } |
1973 |
2090 |
1974 //----------------------------------------------------------------------------- |
2091 //----------------------------------------------------------------------------- |
1975 // setZoomLevelAdaptively() |
2092 // WebView::setZoomLevelAdaptively() |
1976 //----------------------------------------------------------------------------- |
2093 //----------------------------------------------------------------------------- |
1977 void WebView::setZoomLevelAdaptively() |
2094 void WebView::setZoomLevelAdaptively() |
1978 { |
2095 { |
1979 int zoomLevel = KZoomLevelDefaultValue; |
2096 int zoomLevel = KZoomLevelDefaultValue; |
1980 |
2097 |
1981 // Double Tap Zooming: it toggles between default, maxiZoomLevel. |
2098 // Double Tap Zooming: it toggles between default, maxiZoomLevel. |
1982 // Depending on the current zoom level: |
2099 // Depending on the current zoom level: |
1983 // A. If the current is already the max, it zooms to the max |
2100 // A. If the current is already the max, it zooms to the max |
1984 // B. If the current is bigger than/equal to the default zoom level zooms to the default, it zooms to the max |
2101 // B. If the current is bigger than/equal to the default zoom level zooms to the default, it zooms to the max |
1985 // C. Otherwise it zooms to the default level first. |
2102 // C. Otherwise it zooms to the default level first. |
1986 // For the mobile pages, such as google.com and cnn.com, minimum zoom level equals |
2103 // For the mobile pages, such as google.com and cnn.com, minimum zoom level equals |
1987 // to the default zoom level. Zooming is only possible between default and maximum |
2104 // to the default zoom level. Zooming is only possible between default and maximum |
1988 // zoom level, double tap only won't reach logic C |
2105 // zoom level, double tap only won't reach logic C |
1989 // |
2106 // |
1990 // For both mobile and non-mobile pages, it creates the same end user double tap |
2107 // For both mobile and non-mobile pages, it creates the same end user double tap |
1991 // experiences |
2108 // experiences |
1992 |
2109 |
1993 if (m_currentZoomLevel == m_maxZoomLevel ) { |
2110 if (m_currentZoomLevel == m_maxZoomLevel ) { |
1994 zoomLevel = KZoomLevelDefaultValue; |
2111 zoomLevel = KZoomLevelDefaultValue; |
1995 } |
2112 } |
1996 else if (m_currentZoomLevel >= KZoomLevelDefaultValue ) { |
2113 else if (m_currentZoomLevel >= KZoomLevelDefaultValue ) { |
1997 zoomLevel = m_maxZoomLevel; |
2114 zoomLevel = m_maxZoomLevel; |
1998 } |
2115 } |
1999 else { |
2116 else { |
2000 zoomLevel = KZoomLevelDefaultValue; |
2117 zoomLevel = KZoomLevelDefaultValue; |
2001 } |
2118 } |
2002 |
2119 |
2003 // move the content |
2120 // move the content |
2004 WebFrameView* view = mainFrame()->frameView(); |
2121 WebFrameView* view = mainFrame()->frameView(); |
2005 if (!view) return; |
2122 if (!view) return; |
2006 WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); |
2123 WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); |
2020 setZoomLevel(zoomLevel); |
2137 setZoomLevel(zoomLevel); |
2021 mainFrame()->notifyPluginsOfScrolling(); |
2138 mainFrame()->notifyPluginsOfScrolling(); |
2022 } |
2139 } |
2023 |
2140 |
2024 //------------------------------------------------------------------------------- |
2141 //------------------------------------------------------------------------------- |
2142 // WebView::openPluginPlayer |
|
2025 // Called when user clicks a plugin which is able to accept user input, |
2143 // Called when user clicks a plugin which is able to accept user input, |
2026 // this feature is only used in US build |
2144 // this feature is only used in US build |
2027 //------------------------------------------------------------------------------- |
2145 //------------------------------------------------------------------------------- |
2028 void WebView::openPluginPlayer(PluginWin* plugin) |
2146 void WebView::openPluginPlayer(PluginWin* plugin) |
2029 { |
2147 { |
2047 void WebView::setFocusNone() |
2165 void WebView::setFocusNone() |
2048 { |
2166 { |
2049 page()->focusController()->setFocusedNode(NULL, page()->focusController()->focusedOrMainFrame()); |
2167 page()->focusController()->setFocusedNode(NULL, page()->focusController()->focusedOrMainFrame()); |
2050 } |
2168 } |
2051 //------------------------------------------------------------------------------- |
2169 //------------------------------------------------------------------------------- |
2170 // WebView::closePluginPlayer |
|
2052 //------------------------------------------------------------------------------- |
2171 //------------------------------------------------------------------------------- |
2053 void WebView::closePluginPlayer() |
2172 void WebView::closePluginPlayer() |
2054 { |
2173 { |
2055 // stop playing |
2174 // stop playing |
2056 m_pluginplayer->stop(); |
2175 m_pluginplayer->stop(); |
2062 // redraw the control |
2181 // redraw the control |
2063 m_brctl->DrawNow(); |
2182 m_brctl->DrawNow(); |
2064 } |
2183 } |
2065 |
2184 |
2066 //------------------------------------------------------------------------------- |
2185 //------------------------------------------------------------------------------- |
2186 // WebView::createWidgetExtension |
|
2067 //------------------------------------------------------------------------------- |
2187 //------------------------------------------------------------------------------- |
2068 CWidgetExtension* WebView::createWidgetExtension(MWidgetCallback &aWidgetCallback) |
2188 CWidgetExtension* WebView::createWidgetExtension(MWidgetCallback &aWidgetCallback) |
2069 { |
2189 { |
2070 if (!m_widgetextension) { |
2190 if (!m_widgetextension) { |
2071 m_widgetextension = CWidgetExtension::NewL(*this, aWidgetCallback); |
2191 m_widgetextension = CWidgetExtension::NewL(*this, aWidgetCallback); |
2076 |
2196 |
2077 return m_widgetextension; |
2197 return m_widgetextension; |
2078 } |
2198 } |
2079 |
2199 |
2080 //------------------------------------------------------------------------------- |
2200 //------------------------------------------------------------------------------- |
2201 // WebView::forceLayoutAndResize |
|
2081 //------------------------------------------------------------------------------- |
2202 //------------------------------------------------------------------------------- |
2082 void WebView::forceLayoutAndResize(WebFrame* frame) |
2203 void WebView::forceLayoutAndResize(WebFrame* frame) |
2083 { |
2204 { |
2084 if (frame) { |
2205 if (frame) { |
2085 Frame* f = core(frame); |
2206 Frame* f = core(frame); |
2104 } |
2225 } |
2105 } |
2226 } |
2106 } |
2227 } |
2107 |
2228 |
2108 //------------------------------------------------------------------------------- |
2229 //------------------------------------------------------------------------------- |
2230 // WebView::showZoomSliderL |
|
2109 //------------------------------------------------------------------------------- |
2231 //------------------------------------------------------------------------------- |
2110 void WebView::showZoomSliderL() |
2232 void WebView::showZoomSliderL() |
2111 { |
2233 { |
2112 if ( !inPageViewMode()) { |
2234 if ( !inPageViewMode()) { |
2113 m_pageZoomHandler->showZoomSliderL(); |
2235 m_pageZoomHandler->showZoomSliderL(); |
2118 } |
2240 } |
2119 m_startZoomLevel = m_currentZoomLevel; |
2241 m_startZoomLevel = m_currentZoomLevel; |
2120 } |
2242 } |
2121 |
2243 |
2122 //------------------------------------------------------------------------------- |
2244 //------------------------------------------------------------------------------- |
2245 // WebView::hideZoomSliderL |
|
2123 //------------------------------------------------------------------------------- |
2246 //------------------------------------------------------------------------------- |
2124 void WebView::hideZoomSliderL() |
2247 void WebView::hideZoomSliderL() |
2125 { |
2248 { |
2126 if ( !inPageViewMode()) { |
2249 if ( !inPageViewMode()) { |
2127 m_pageZoomHandler->hideZoomSliderL(); |
2250 m_pageZoomHandler->hideZoomSliderL(); |
2128 } |
2251 } |
2129 } |
2252 } |
2130 |
2253 |
2131 //------------------------------------------------------------------------------- |
2254 //------------------------------------------------------------------------------- |
2255 // WebView::notifyZoomSliderModeChangeL |
|
2132 //------------------------------------------------------------------------------- |
2256 //------------------------------------------------------------------------------- |
2133 void WebView::notifyZoomSliderModeChangeL( bool mode ) |
2257 void WebView::notifyZoomSliderModeChangeL( bool mode ) |
2134 { |
2258 { |
2135 m_dirtyZoomMode = false; |
2259 m_dirtyZoomMode = false; |
2136 clearOffScreenBitmap(); |
2260 clearOffScreenBitmap(); |
2137 zoomLevelChanged( m_currentZoomLevel ); |
2261 zoomLevelChanged( m_currentZoomLevel ); |
2138 m_brctl->reportStateChanged(TBrCtlDefs::EStateZoomSliderMode, mode ); |
2262 m_brctl->reportStateChanged(TBrCtlDefs::EStateZoomSliderMode, mode ); |
2139 } |
2263 } |
2140 |
2264 |
2141 //------------------------------------------------------------------------------- |
2265 //------------------------------------------------------------------------------- |
2266 // WebView::maxZoomLevel |
|
2142 //------------------------------------------------------------------------------- |
2267 //------------------------------------------------------------------------------- |
2143 int WebView::maxZoomLevel() |
2268 int WebView::maxZoomLevel() |
2144 { |
2269 { |
2145 return m_maxZoomLevel; |
2270 return m_maxZoomLevel; |
2146 } |
2271 } |
2147 |
2272 |
2148 //------------------------------------------------------------------------------- |
2273 //------------------------------------------------------------------------------- |
2274 // WebView::minZoomLevel |
|
2149 //------------------------------------------------------------------------------- |
2275 //------------------------------------------------------------------------------- |
2150 int WebView::minZoomLevel() |
2276 int WebView::minZoomLevel() |
2151 { |
2277 { |
2152 return m_minZoomLevel; |
2278 return m_minZoomLevel; |
2153 } |
2279 } |
2154 |
2280 |
2155 //------------------------------------------------------------------------------- |
2281 //------------------------------------------------------------------------------- |
2282 // WebView::updateZoomLevel |
|
2156 //------------------------------------------------------------------------------- |
2283 //------------------------------------------------------------------------------- |
2157 void WebView::updateZoomLevel( TBrCtlDefs::TBrCtlSettings setting, unsigned int value) |
2284 void WebView::updateZoomLevel( TBrCtlDefs::TBrCtlSettings setting, unsigned int value) |
2158 { |
2285 { |
2159 switch( setting ) { |
2286 switch( setting ) { |
2160 case TBrCtlDefs::ESettingsZoomLevelMax: |
2287 case TBrCtlDefs::ESettingsZoomLevelMax: |
2176 break; // should not occur |
2303 break; // should not occur |
2177 } |
2304 } |
2178 } |
2305 } |
2179 |
2306 |
2180 //------------------------------------------------------------------------------- |
2307 //------------------------------------------------------------------------------- |
2308 // WebView::EnterFullscreenBrowsingL |
|
2181 //------------------------------------------------------------------------------- |
2309 //------------------------------------------------------------------------------- |
2182 void WebView::EnterFullscreenBrowsingL() |
2310 void WebView::EnterFullscreenBrowsingL() |
2183 { |
2311 { |
2184 if (m_pageFullScreenHandler) { |
2312 if (m_pageFullScreenHandler) { |
2185 m_pageFullScreenHandler->showEscBtnL(); |
2313 m_pageFullScreenHandler->showEscBtnL(); |
2186 StaticObjectsContainer::instance()->setFullScreenMode(true); |
2314 StaticObjectsContainer::instance()->setFullScreenMode(true); |
2187 } |
2315 } |
2188 } |
2316 } |
2189 |
2317 |
2190 //------------------------------------------------------------------------------- |
2318 //------------------------------------------------------------------------------- |
2319 // WebView::LeaveFullscreenBrowsingL |
|
2191 //------------------------------------------------------------------------------- |
2320 //------------------------------------------------------------------------------- |
2192 void WebView::LeaveFullscreenBrowsingL() |
2321 void WebView::LeaveFullscreenBrowsingL() |
2193 { |
2322 { |
2194 if (m_pageFullScreenHandler) { |
2323 if (m_pageFullScreenHandler) { |
2195 m_pageFullScreenHandler->hideEscBtnL(); |
2324 m_pageFullScreenHandler->hideEscBtnL(); |
2196 StaticObjectsContainer::instance()->setFullScreenMode(false); |
2325 StaticObjectsContainer::instance()->setFullScreenMode(false); |
2197 } |
2326 } |
2198 } |
2327 } |
2199 |
2328 |
2200 //------------------------------------------------------------------------------- |
2329 //------------------------------------------------------------------------------- |
2330 // WebView::notifyFullscreenModeChangeL |
|
2201 //------------------------------------------------------------------------------- |
2331 //------------------------------------------------------------------------------- |
2202 void WebView::notifyFullscreenModeChangeL(bool mode) |
2332 void WebView::notifyFullscreenModeChangeL(bool mode) |
2203 { |
2333 { |
2204 if (m_pageFullScreenHandler ) |
2334 if (m_pageFullScreenHandler ) |
2205 m_brctl->reportStateChanged(TBrCtlDefs::EStateFullscreenBrowsing, mode ); |
2335 m_brctl->reportStateChanged(TBrCtlDefs::EStateFullscreenBrowsing, mode ); |
2206 } |
2336 } |
2207 |
2337 |
2208 //------------------------------------------------------------------------------- |
2338 //------------------------------------------------------------------------------- |
2339 // WebView::checkForZoomChange |
|
2209 //------------------------------------------------------------------------------- |
2340 //------------------------------------------------------------------------------- |
2210 void WebView::checkForZoomChange() |
2341 void WebView::checkForZoomChange() |
2211 { |
2342 { |
2212 zoomLevelChanged(m_currentZoomLevel); |
2343 zoomLevelChanged(m_currentZoomLevel); |
2213 } |
2344 } |
2257 } |
2388 } |
2258 void WebView::setRedirectWithLockedHistory(bool value) { |
2389 void WebView::setRedirectWithLockedHistory(bool value) { |
2259 m_redirectWithLockedHistory = value; |
2390 m_redirectWithLockedHistory = value; |
2260 } |
2391 } |
2261 //------------------------------------------------------------------------------- |
2392 //------------------------------------------------------------------------------- |
2393 // WebView::notifyPlugins |
|
2262 // Webview notifies plugins to handle play/pause of .swf files when user switches to menu/another application |
2394 // Webview notifies plugins to handle play/pause of .swf files when user switches to menu/another application |
2263 //------------------------------------------------------------------------------- |
2395 //------------------------------------------------------------------------------- |
2264 void WebView::notifyPlugins(TBool focus) |
2396 void WebView::notifyPlugins(TBool focus) |
2265 { |
2397 { |
2266 Frame* coreFrame =core(mainFrame()); |
2398 Frame* coreFrame =core(mainFrame()); |
2312 m_allowRepaints = on; |
2444 m_allowRepaints = on; |
2313 } |
2445 } |
2314 |
2446 |
2315 |
2447 |
2316 //----------------------------------------------------------------------------- |
2448 //----------------------------------------------------------------------------- |
2317 // setZoomCursorPosition(TBool) |
2449 // WebView::setZoomCursorPosition |
2318 // Set the cursor position while zooming, this is only for non-touch device |
2450 // Set the cursor position while zooming, this is only for non-touch device |
2319 //----------------------------------------------------------------------------- |
2451 //----------------------------------------------------------------------------- |
2320 void WebView::setZoomCursorPosition(TBool isZoomIn) |
2452 void WebView::setZoomCursorPosition(TBool isZoomIn) |
2321 { |
2453 { |
2322 int zoomLevel = m_currentZoomLevel; |
2454 int zoomLevel = m_currentZoomLevel; |
2357 mainFrame()->notifyPluginsOfScrolling(); |
2489 mainFrame()->notifyPluginsOfScrolling(); |
2358 } |
2490 } |
2359 |
2491 |
2360 |
2492 |
2361 // --------------------------------------------------------------------------- |
2493 // --------------------------------------------------------------------------- |
2362 // FindCurrentZoomIndex |
2494 // WebView::FindCurrentZoomIndex |
2363 // --------------------------------------------------------------------------- |
2495 // --------------------------------------------------------------------------- |
2364 TInt WebView::FindCurrentZoomIndex(TInt aCurrentZoomLevel) |
2496 TInt WebView::FindCurrentZoomIndex(TInt aCurrentZoomLevel) |
2365 { |
2497 { |
2366 TInt aIndex = -1; |
2498 TInt aIndex = -1; |
2367 |
2499 |
2379 TInt WebView::getWidgetId() |
2511 TInt WebView::getWidgetId() |
2380 { |
2512 { |
2381 return m_widgetextension ? m_widgetextension->GetWidgetId():0; |
2513 return m_widgetextension ? m_widgetextension->GetWidgetId():0; |
2382 } |
2514 } |
2383 |
2515 |
2384 void WebView::setShowCursor(TBool showCursor) |
2516 void WebView::setShowCursor(TBool showCursor) |
2385 { |
2517 { |
2386 m_showCursor = showCursor; |
2518 m_showCursor = showCursor; |
2387 StaticObjectsContainer::instance()->webCursor()->setCursorVisible(showCursor); |
2519 StaticObjectsContainer::instance()->webCursor()->setCursorVisible(showCursor); |
2388 } |
2520 } |
2389 |
2521 |