Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 0cc73d4

Browse files
committed
[[ BrowserWidget ]] Split libbrowser "scrollbars" property to "verticalScrollbarEnabled" and "horizontalScrollbarEnabled"
1 parent 63637d5 commit 0cc73d4

File tree

7 files changed

+141
-62
lines changed

7 files changed

+141
-62
lines changed

engine/src/java/com/runrev/android/libraries/LibBrowser.java

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,6 @@ class LibBrowserWebView extends WebView
150150
{
151151
public static final String TAG = "revandroid.LibBrowserWebView";
152152

153-
private boolean m_scrolling_enabled;
154-
155153
private VideoView m_custom_video_view;
156154
private FrameLayout m_custom_view_container;
157155
private WebChromeClient.CustomViewCallback m_custom_view_callback;
@@ -164,8 +162,6 @@ public LibBrowserWebView(Context p_context)
164162
{
165163
super(p_context);
166164

167-
m_scrolling_enabled = true;
168-
169165
setWebViewClient(new WebViewClient() {
170166
public boolean shouldOverrideUrlLoading(WebView p_view, String p_url)
171167
{
@@ -427,30 +423,24 @@ public void setUrl(String p_url)
427423
// return toAPKPath(super.getUrl());
428424
//}
429425

430-
public boolean getScrollingEnabled()
426+
public boolean getVerticalScrollbarEnabled()
431427
{
432-
return m_scrolling_enabled;
428+
return isVerticalScrollBarEnabled();
433429
}
434430

435-
public void setScrollingEnabled(boolean p_enabled)
431+
public void setVerticalScrollbarEnabled(boolean p_enabled)
436432
{
437-
if (m_scrolling_enabled == p_enabled)
438-
return;
439-
m_scrolling_enabled = p_enabled;
440-
setHorizontalScrollBarEnabled(p_enabled);
441433
setVerticalScrollBarEnabled(p_enabled);
442-
getSettings().setBuiltInZoomControls(p_enabled);
443-
if (!m_scrolling_enabled)
444-
{
445-
setOnTouchListener(new View.OnTouchListener() {
446-
@Override
447-
public boolean onTouch(View v, MotionEvent event) {
448-
return (event.getAction() == MotionEvent.ACTION_MOVE);
449-
}
450-
});
451-
}
452-
else
453-
setOnTouchListener(null);
434+
}
435+
436+
public boolean getHorizontalScrollbarEnabled()
437+
{
438+
return isHorizontalScrollBarEnabled();
439+
}
440+
441+
public void setHorizontalScrollbarEnabled(boolean p_enabled)
442+
{
443+
setHorizontalScrollBarEnabled(p_enabled);
454444
}
455445

456446
public String getUserAgent()

libbrowser/include/libbrowser.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ enum MCBrowserProperty
6262
{
6363
// kMCBrowserRect,
6464
// Boolean properties
65-
kMCBrowserScrollbars,
65+
kMCBrowserVerticalScrollbarEnabled,
66+
kMCBrowserHorizontalScrollbarEnabled,
6667
kMCBrowserAllowNewWindows,
6768
kMCBrowserEnableContextMenu,
6869

libbrowser/src/libbrowser_android.cpp

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -606,8 +606,11 @@ class MCAndroidWebViewBrowser : public MCBrowserBase
606606
{
607607
switch (p_property)
608608
{
609-
case kMCBrowserScrollbars:
610-
return GetScrollbarsEnabled(r_value);
609+
case kMCBrowserVerticalScrollbarEnabled:
610+
return GetVerticalScrollbarEnabled(r_value);
611+
612+
case kMCBrowserHorizontalScrollbarEnabled:
613+
return GetHorizontalScrollbarEnabled(r_value);
611614

612615
default:
613616
break;
@@ -620,9 +623,12 @@ class MCAndroidWebViewBrowser : public MCBrowserBase
620623
{
621624
switch (p_property)
622625
{
623-
case kMCBrowserScrollbars:
624-
return SetScrollbarsEnabled(p_value);
626+
case kMCBrowserVerticalScrollbarEnabled:
627+
return SetVerticalScrollbarEnabled(p_value);
625628

629+
case kMCBrowserHorizontalScrollbarEnabled:
630+
return SetHorizontalScrollbarEnabled(p_value);
631+
626632
default:
627633
break;
628634
}
@@ -729,15 +735,27 @@ class MCAndroidWebViewBrowser : public MCBrowserBase
729735
//////////
730736

731737
private:
732-
bool GetScrollbarsEnabled(bool &r_value)
738+
bool GetVerticalScrollbarEnabled(bool &r_value)
739+
{
740+
MCAndroidObjectRemoteCall(m_view, "getVerticalScrollbarEnabled", "b", &r_value);
741+
return true;
742+
}
743+
744+
bool SetVerticalScrollbarEnabled(bool p_value)
745+
{
746+
MCAndroidObjectRemoteCall(m_view, "setVerticalScrollbarEnabled", "vb", nil, p_value);
747+
return true;
748+
}
749+
750+
bool GetHorizontalScrollbarEnabled(bool &r_value)
733751
{
734-
MCAndroidObjectRemoteCall(m_view, "getScrollingEnabled", "b", &r_value);
752+
MCAndroidObjectRemoteCall(m_view, "getHorizontalScrollbarEnabled", "b", &r_value);
735753
return true;
736754
}
737755

738-
bool SetScrollbarsEnabled(bool p_value)
756+
bool SetHorizontalScrollbarEnabled(bool p_value)
739757
{
740-
MCAndroidObjectRemoteCall(m_view, "setScrollingEnabled", "vb", nil, p_value);
758+
MCAndroidObjectRemoteCall(m_view, "setHorizontalScrollbarEnabled", "vb", nil, p_value);
741759
return true;
742760
}
743761

libbrowser/src/libbrowser_cef.cpp

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1284,16 +1284,23 @@ void MCCefBrowserBase::SetSource(const char *p_source)
12841284
m_browser->GetMainFrame()->LoadString(t_source, t_url);
12851285
}
12861286

1287+
#define MCCEF_VERTICAL_OVERFLOW_PROPERTY "document.body.style.overflowY"
1288+
#define MCCEF_HORIZONTAL_OVERFLOW_PROPERTY "document.body.style.overflowX"
1289+
inline const char *scrollbar_property(MCCefScrollbarDirection p_direction)
1290+
{
1291+
return p_direction == kMCCefScrollbarVertical ? MCCEF_VERTICAL_OVERFLOW_PROPERTY : MCCEF_HORIZONTAL_OVERFLOW_PROPERTY;
1292+
}
1293+
12871294
// IM-2014-08-25: [[ Bug 13272 ]] Implement CEF browser scrollbar property.
1288-
bool MCCefBrowserBase::GetOverflowHidden()
1295+
bool MCCefBrowserBase::GetOverflowHidden(MCCefScrollbarDirection p_direction)
12891296
{
12901297
// property available through JavaScript
12911298
bool t_success;
12921299
t_success = true;
12931300

12941301
CefString t_value;
12951302

1296-
t_success = EvalJavaScript("document.body.style.overflow", t_value);
1303+
t_success = EvalJavaScript(scrollbar_property(p_direction), t_value);
12971304

12981305
// assume scrollbars are visible if property fetch fails
12991306
if (!t_success)
@@ -1303,7 +1310,7 @@ bool MCCefBrowserBase::GetOverflowHidden()
13031310
}
13041311

13051312
// IM-2014-08-25: [[ Bug 13272 ]] Implement CEF browser scrollbar property.
1306-
void MCCefBrowserBase::SetOverflowHidden(bool p_hidden)
1313+
void MCCefBrowserBase::SetOverflowHidden(MCCefScrollbarDirection p_direction, bool p_hidden)
13071314
{
13081315
// property available through JavaScript
13091316

@@ -1313,7 +1320,7 @@ void MCCefBrowserBase::SetOverflowHidden(bool p_hidden)
13131320
char *t_overflow_script;
13141321
t_overflow_script = nil;
13151322

1316-
t_success = MCCStringFormat(t_overflow_script, "document.body.style.overflow = \"%s\"", p_hidden ? "hidden" : "");
1323+
t_success = MCCStringFormat(t_overflow_script, "%s = \"%s\"", scrollbar_property(p_direction), p_hidden ? "hidden" : "");
13171324

13181325
CefString t_return_value;
13191326

@@ -1323,16 +1330,28 @@ void MCCefBrowserBase::SetOverflowHidden(bool p_hidden)
13231330
MCCStringFree(t_overflow_script);
13241331
}
13251332

1326-
bool MCCefBrowserBase::GetScrollbars(void)
1333+
bool MCCefBrowserBase::GetVerticalScrollbarEnabled(void)
1334+
{
1335+
// IM-2014-08-25: [[ Bug 13272 ]] Show / hide scrollbars by setting the overflow style to empty / "hidden".
1336+
return !GetOverflowHidden(kMCCefScrollbarVertical);
1337+
}
1338+
1339+
void MCCefBrowserBase::SetVerticalScrollbarEnabled(bool p_scrollbars)
13271340
{
13281341
// IM-2014-08-25: [[ Bug 13272 ]] Show / hide scrollbars by setting the overflow style to empty / "hidden".
1329-
return !GetOverflowHidden();
1342+
/* UNCHECKED */ SetOverflowHidden(kMCCefScrollbarVertical, !p_scrollbars);
13301343
}
13311344

1332-
void MCCefBrowserBase::SetScrollbars(bool p_scrollbars)
1345+
bool MCCefBrowserBase::GetHorizontalScrollbarEnabled(void)
13331346
{
13341347
// IM-2014-08-25: [[ Bug 13272 ]] Show / hide scrollbars by setting the overflow style to empty / "hidden".
1335-
/* UNCHECKED */ SetOverflowHidden(!p_scrollbars);
1348+
return !GetOverflowHidden(kMCCefScrollbarHorizontal);
1349+
}
1350+
1351+
void MCCefBrowserBase::SetHorizontalScrollbarEnabled(bool p_scrollbars)
1352+
{
1353+
// IM-2014-08-25: [[ Bug 13272 ]] Show / hide scrollbars by setting the overflow style to empty / "hidden".
1354+
/* UNCHECKED */ SetOverflowHidden(kMCCefScrollbarHorizontal, !p_scrollbars);
13361355
}
13371356

13381357
bool MCCefBrowserBase::GetRect(MCBrowserRect &r_rect)
@@ -1551,8 +1570,12 @@ bool MCCefBrowserBase::GetBoolProperty(MCBrowserProperty p_property, bool &r_val
15511570
r_value = GetEnableContextMenu();
15521571
return true;
15531572

1554-
case kMCBrowserScrollbars:
1555-
r_value = GetScrollbars();
1573+
case kMCBrowserVerticalScrollbarEnabled:
1574+
r_value = GetVerticalScrollbarEnabled();
1575+
return true;
1576+
1577+
case kMCBrowserHorizontalScrollbarEnabled:
1578+
r_value = GetHorizontalScrollbarEnabled();
15561579
return true;
15571580

15581581
default:
@@ -1574,8 +1597,12 @@ bool MCCefBrowserBase::SetBoolProperty(MCBrowserProperty p_property, bool p_valu
15741597
SetEnableContextMenu(p_value);
15751598
return true;
15761599

1577-
case kMCBrowserScrollbars:
1578-
SetScrollbars(p_value);
1600+
case kMCBrowserVerticalScrollbarEnabled:
1601+
SetVerticalScrollbarEnabled(p_value);
1602+
return true;
1603+
1604+
case kMCBrowserHorizontalScrollbarEnabled:
1605+
SetHorizontalScrollbarEnabled(p_value);
15791606
return true;
15801607

15811608
default:

libbrowser/src/libbrowser_cef.h

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ enum MCCefAuthScheme
3535
kMCCefAuthSPDYProxy,
3636
};
3737

38+
enum MCCefScrollbarDirection
39+
{
40+
kMCCefScrollbarVertical = 1<<0,
41+
kMCCefScrollbarHorizontal = 1<<1,
42+
};
43+
3844
class MCCefBrowserBase : public MCBrowserBase
3945
{
4046
public:
@@ -82,8 +88,8 @@ class MCCefBrowserBase : public MCBrowserBase
8288
bool WaitOnResultString(CefString &r_result);
8389
bool GetMessageResultString(CefProcessId p_target, CefRefPtr<CefProcessMessage> p_message, CefString &r_result);
8490

85-
bool GetOverflowHidden();
86-
void SetOverflowHidden(bool p_hidden);
91+
bool GetOverflowHidden(MCCefScrollbarDirection);
92+
void SetOverflowHidden(MCCefScrollbarDirection, bool p_hidden);
8793

8894
public:
8995
bool GetUserAgent(CefString &r_user_agent);
@@ -101,8 +107,11 @@ class MCCefBrowserBase : public MCBrowserBase
101107
virtual char *GetSource(void);
102108
virtual void SetSource(const char *p_source);
103109

104-
virtual bool GetScrollbars(void);
105-
virtual void SetScrollbars(bool p_scrollbars);
110+
virtual bool GetVerticalScrollbarEnabled(void);
111+
virtual void SetVerticalScrollbarEnabled(bool p_scrollbars);
112+
113+
virtual bool GetHorizontalScrollbarEnabled(void);
114+
virtual void SetHorizontalScrollbarEnabled(bool p_scrollbars);
106115

107116
virtual char *GetUserAgent(void);
108117
virtual void SetUserAgent(const char *p_user_agent);

libbrowser/src/libbrowser_uiwebview.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ class MCUIWebViewBrowser : public MCBrowserBase
5151
bool GetHTMLText(char *&r_htmltext);
5252
bool SetHTMLText(const char *p_htmltext);
5353

54-
bool GetScrollingEnabled(bool& r_value);
55-
bool SetScrollingEnabled(bool p_value);
54+
bool GetVerticalScrollbarEnabled(bool& r_value);
55+
bool SetVerticalScrollbarEnabled(bool p_value);
56+
bool GetHorizontalScrollbarEnabled(bool& r_value);
57+
bool SetHorizontalScrollbarEnabled(bool p_value);
5658

5759
bool GetJavaScriptHandlers(char *&r_handlers);
5860
bool SetJavaScriptHandlers(const char *p_handlers);

libbrowser/src/libbrowser_uiwebview.mm

Lines changed: 44 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -247,41 +247,67 @@ inline void MCBrowserRunBlockOnMainFiber(void (^p_block)(void))
247247
return true;
248248
}
249249

250-
bool MCUIWebViewBrowser::SetScrollingEnabled(bool p_value)
250+
bool MCUIWebViewBrowser::GetUrl(char *&r_url)
251+
{
252+
UIWebView *t_view;
253+
if (!GetView(t_view))
254+
return false;
255+
256+
__block bool t_success;
257+
MCBrowserRunBlockOnMainFiber(^{
258+
t_success = MCCStringClone([[[[t_view request] URL] absoluteString] cStringUsingEncoding: NSUTF8StringEncoding], r_url);
259+
});
260+
261+
return t_success;
262+
}
263+
264+
bool MCUIWebViewBrowser::SetVerticalScrollbarEnabled(bool p_value)
251265
{
252266
UIWebView *t_view;
253267
if (!GetView(t_view))
254268
return false;
255269

256270
MCBrowserRunBlockOnMainFiber(^{
257-
[GetScrollView() setScrollEnabled: p_value ? YES : NO];
271+
GetScrollView().showsVerticalScrollIndicator = p_value ? YES : NO;
258272
});
259273

260274
return true;
261275
}
262276

263-
bool MCUIWebViewBrowser::GetUrl(char *&r_url)
277+
bool MCUIWebViewBrowser::GetVerticalScrollbarEnabled(bool& r_value)
264278
{
265279
UIWebView *t_view;
266280
if (!GetView(t_view))
267281
return false;
268282

269-
__block bool t_success;
270283
MCBrowserRunBlockOnMainFiber(^{
271-
t_success = MCCStringClone([[[[t_view request] URL] absoluteString] cStringUsingEncoding: NSUTF8StringEncoding], r_url);
284+
r_value = GetScrollView().showsVerticalScrollIndicator;
272285
});
286+
287+
return true;
288+
}
273289

274-
return t_success;
290+
bool MCUIWebViewBrowser::SetHorizontalScrollbarEnabled(bool p_value)
291+
{
292+
UIWebView *t_view;
293+
if (!GetView(t_view))
294+
return false;
295+
296+
MCBrowserRunBlockOnMainFiber(^{
297+
GetScrollView().showsHorizontalScrollIndicator = p_value ? YES : NO;
298+
});
299+
300+
return true;
275301
}
276302

277-
bool MCUIWebViewBrowser::GetScrollingEnabled(bool& r_value)
303+
bool MCUIWebViewBrowser::GetHorizontalScrollbarEnabled(bool& r_value)
278304
{
279305
UIWebView *t_view;
280306
if (!GetView(t_view))
281307
return false;
282308

283309
MCBrowserRunBlockOnMainFiber(^{
284-
r_value = [GetScrollView() isScrollEnabled];
310+
r_value = GetScrollView().showsHorizontalScrollIndicator;
285311
});
286312

287313
return true;
@@ -385,8 +411,11 @@ inline void MCBrowserRunBlockOnMainFiber(void (^p_block)(void))
385411
{
386412
switch (p_property)
387413
{
388-
case kMCBrowserScrollbars:
389-
return SetScrollingEnabled(p_value);
414+
case kMCBrowserVerticalScrollbarEnabled:
415+
return SetVerticalScrollbarEnabled(p_value);
416+
417+
case kMCBrowserHorizontalScrollbarEnabled:
418+
return SetHorizontalScrollbarEnabled(p_value);
390419

391420
default:
392421
break;
@@ -399,8 +428,11 @@ inline void MCBrowserRunBlockOnMainFiber(void (^p_block)(void))
399428
{
400429
switch (p_property)
401430
{
402-
case kMCBrowserScrollbars:
403-
return GetScrollingEnabled(r_value);
431+
case kMCBrowserVerticalScrollbarEnabled:
432+
return GetVerticalScrollbarEnabled(r_value);
433+
434+
case kMCBrowserHorizontalScrollbarEnabled:
435+
return GetHorizontalScrollbarEnabled(r_value);
404436

405437
default:
406438
break;

0 commit comments

Comments
 (0)