From: dongsug.song Date: Fri, 28 Mar 2025 09:30:01 +0000 (+0900) Subject: [NUI] Add OverScrolled in WebView X-Git-Tag: submit/tizen/20250429.085946~1^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5fe10ae570e3cca68982e7686c6d963fa918a225;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] Add OverScrolled in WebView --- diff --git a/src/Tizen.NUI/src/internal/Interop/Interop.WebView.cs b/src/Tizen.NUI/src/internal/Interop/Interop.WebView.cs index d775c3a98..e7f94ffef 100755 --- a/src/Tizen.NUI/src/internal/Interop/Interop.WebView.cs +++ b/src/Tizen.NUI/src/internal/Interop/Interop.WebView.cs @@ -312,6 +312,9 @@ namespace Tizen.NUI [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_WebView_RegisterNavigationPolicyDecidedCallback")] public static extern void RegisterNavigationPolicyDecidedCallback(HandleRef jarg1, HandleRef jarg2); + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_WebView_RegisterOverScrolledCallback")] + public static extern void RegisterOverScrolledCallback(HandleRef jarg1, HandleRef jarg2); + [DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_WebView_RegisterNewWindowPolicyDecidedCallback")] public static extern void RegisterNewWindowPolicyDecidedCallback(HandleRef jarg1, HandleRef jarg2); diff --git a/src/Tizen.NUI/src/internal/WebView/WebViewOverScrolledEventArgs.cs b/src/Tizen.NUI/src/internal/WebView/WebViewOverScrolledEventArgs.cs new file mode 100755 index 000000000..68cf04530 --- /dev/null +++ b/src/Tizen.NUI/src/internal/WebView/WebViewOverScrolledEventArgs.cs @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2025 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +using System; +using System.ComponentModel; + +namespace Tizen.NUI +{ + /// + /// Event arguments that passed via the WebView.OverScrolled. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public class WebViewOverScrolledEventArgs : EventArgs + { + internal WebViewOverScrolledEventArgs(Over e) + { + OverScrolled = e; + } + + /// + /// The enumeration for over scrolled. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public enum Over + { + [EditorBrowsable(EditorBrowsableState.Never)] + Left, + + [EditorBrowsable(EditorBrowsableState.Never)] + Right, + + [EditorBrowsable(EditorBrowsableState.Never)] + Top, + + [EditorBrowsable(EditorBrowsableState.Never)] + Bottom, + } + + /// + /// The over scolled direction, e.g. left, right, etc. + /// + [EditorBrowsable(EditorBrowsableState.Never)] + public Over OverScrolled { get; } + } +} diff --git a/src/Tizen.NUI/src/public/WebView/WebView.cs b/src/Tizen.NUI/src/public/WebView/WebView.cs index 1c998ca7b..dc93dab4e 100755 --- a/src/Tizen.NUI/src/public/WebView/WebView.cs +++ b/src/Tizen.NUI/src/public/WebView/WebView.cs @@ -103,6 +103,9 @@ namespace Tizen.NUI.BaseComponents private EventHandler scrollEdgeReachedEventHandler; private WebViewScrollEdgeReachedCallback scrollEdgeReachedCallback; + private EventHandler overScrolledEventHandler; + private WebViewOverScrolledCallback overScrolledCallback; + private EventHandler urlChangedEventHandler; private WebViewUrlChangedCallback urlChangedCallback; @@ -388,6 +391,9 @@ namespace Tizen.NUI.BaseComponents [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void WebViewScrollEdgeReachedCallback(int edge); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + private delegate void WebViewOverScrolledCallback(int overscrolled); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate void WebViewUrlChangedCallback(string pageUrl); @@ -599,6 +605,34 @@ namespace Tizen.NUI.BaseComponents } } + /// + /// Event for the OverScrolled signal which can be used to subscribe or unsubscribe the event handler.
+ /// This signal is emitted when web view is over scrolled.
+ ///
+ [EditorBrowsable(EditorBrowsableState.Never)] + public event EventHandler OverScrolled + { + add + { + if (overScrolledEventHandler == null) + { + overScrolledCallback = OnOverScrolled; + IntPtr ip = Marshal.GetFunctionPointerForDelegate(overScrolledCallback); + Interop.WebView.RegisterOverScrolledCallback(SwigCPtr, new HandleRef(this, ip)); + } + overScrolledEventHandler += value; + } + remove + { + overScrolledEventHandler -= value; + if (overScrolledEventHandler == null) + { + IntPtr ip = IntPtr.Zero; + Interop.WebView.RegisterOverScrolledCallback(SwigCPtr, new HandleRef(this, ip)); + } + } + } + /// /// Event for the UrlChanged signal which can be used to subscribe or unsubscribe the event handler.
/// This signal is emitted when url is changed.
@@ -3132,6 +3166,11 @@ namespace Tizen.NUI.BaseComponents scrollEdgeReachedEventHandler?.Invoke(this, new WebViewScrollEdgeReachedEventArgs((WebViewScrollEdgeReachedEventArgs.Edge)edge)); } + private void OnOverScrolled(int over) + { + overScrolledEventHandler?.Invoke(this, new WebViewOverScrolledEventArgs((WebViewOverScrolledEventArgs.Over)over)); + } + private void OnUrlChanged(string pageUrl) { urlChangedEventHandler?.Invoke(this, new WebViewUrlChangedEventArgs(pageUrl));