Skip to content

Commit

Permalink
Several changes:
Browse files Browse the repository at this point in the history
 - various flexlayout fixes and improvements
 - Fixed case error, fix not showing tooltip when moving off of another tooltip
  • Loading branch information
RockinRoel committed Aug 27, 2018
1 parent 3fd3369 commit cd37d6e
Show file tree
Hide file tree
Showing 24 changed files with 204 additions and 137 deletions.
4 changes: 0 additions & 4 deletions examples/widgetgallery/WidgetGallery.C
Expand Up @@ -60,7 +60,6 @@ WidgetGallery::WidgetGallery()
* Add it all inside a layout
*/
auto layout = this->setLayout(Wt::cpp14::make_unique<Wt::WVBoxLayout>());
layout->setPreferredImplementation(Wt::LayoutImplementation::JavaScript);
layout->addWidget(std::move(navigation), 0);
layout->addWidget(std::move(contentsStack), 1);
layout->setContentsMargins(0, 0, 0, 0);
Expand All @@ -77,20 +76,17 @@ Wt::WMenuItem *WidgetGallery::addToMenu(Wt::WMenu *menu,
auto pane_ = pane.get();

auto vLayout = result->setLayout(Wt::cpp14::make_unique<Wt::WVBoxLayout>());
vLayout->setPreferredImplementation(Wt::LayoutImplementation::JavaScript);
vLayout->setContentsMargins(0, 0, 0, 0);
vLayout->addWidget(std::move(topic));
vLayout->addWidget(std::move(pane), 1);

auto hLayout = pane_->setLayout(Wt::cpp14::make_unique<Wt::WHBoxLayout>());
hLayout->setPreferredImplementation(Wt::LayoutImplementation::JavaScript);

auto item = Wt::cpp14::make_unique<Wt::WMenuItem>(name, std::move(result));
auto item_ = menu->addItem(std::move(item));

auto subStack = Wt::cpp14::make_unique<Wt::WStackedWidget>();
subStack->addStyleClass("contents");
subStack->setOverflow(Wt::Overflow::Auto);

/*
WAnimation animation(AnimationEffect::Fade,
Expand Down
2 changes: 1 addition & 1 deletion examples/widgetgallery/docroot/style/everywidget.css
Expand Up @@ -121,7 +121,7 @@ span.reactive {
}

div.contents {
padding: 0px 12px 6px;
padding: 0px 0px 3px 12px;
}

.example-table {
Expand Down
1 change: 0 additions & 1 deletion examples/widgetgallery/main.C
Expand Up @@ -63,7 +63,6 @@ std::unique_ptr<WApplication> createApplication(const Wt::WEnvironment& env)

auto layout =
app->root()->setLayout(cpp14::make_unique<WHBoxLayout>());
layout->setPreferredImplementation(Wt::LayoutImplementation::JavaScript);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(cpp14::make_unique<WidgetGallery>());

Expand Down
18 changes: 9 additions & 9 deletions src/Wt/WPanel.C
Expand Up @@ -41,9 +41,9 @@ WPanel::WPanel()

setJavaScriptMember
(WT_RESIZE_JS,
"function(self, w, h, l) {"
"""var defined = h >= 0;"
"""if (defined) {"
"function(self, w, h, s) {"
"""var hdefined = h >= 0;"
"""if (hdefined) {"
"" "var mh = " WT_CLASS ".px(self, 'maxHeight');"
"" "if (mh > 0) h = Math.min(h, mh);"
"""}"
Expand All @@ -56,23 +56,23 @@ WPanel::WPanel()
"""if (t)"
"" "h -= t.offsetHeight;"
"""h -= 8;" // padding
"""if (defined && h > 0) {"
"" "c.lh = l;"
"""if (hdefined && h > 0) {"
"" "c.lh = true;"
"" "c.style.height = h + 'px';"
// this seems golden, but, JQuery docs say it doesn't work when
// the panel is indirectly hidden: will this back-fire ?
"" "$(c).children().each(function() { "
"" "var self = $(this), "
"" "padding = self.outerHeight() - self.height();"
"" "self.height(h - padding);"
"" "this.lh = l;"
"" "this.lh = true;"
"" "});"
"""} else {"
"" "c.lh = false;"
"" "c.style.height = '';"
"" "c.lh = false;"
"" "$(c).children().each(function() { "
"" "this.style.height = '';"
"" "this.lh = false;"
"" "this.style.height = '';"
"" "this.lh = false;"
"" "});"
"""}"
"};");
Expand Down
1 change: 1 addition & 0 deletions src/Wt/WStackedWidget.C
Expand Up @@ -21,6 +21,7 @@ WStackedWidget::WStackedWidget()
javaScriptDefined_(false),
loadAnimateJS_(false)
{
setOverflow(Overflow::Hidden);
addStyleClass("Wt-stack");
}

Expand Down
4 changes: 2 additions & 2 deletions src/Wt/WTextEdit.C
Expand Up @@ -52,8 +52,8 @@ void WTextEdit::init()

setJavaScriptMember
(WT_RESIZE_JS,
"function(e, w, h) { var obj = $('#" + id() + "').data('obj'); "
"obj.wtResize(e, w, h); };");
"function(e, w, h, s) { var obj = $('#" + id() + "').data('obj'); "
"obj.wtResize(e, w, h, s); };");

std::string direction
= app->layoutDirection() == LayoutDirection::LeftToRight ? "ltr" : "rtl";
Expand Down
4 changes: 2 additions & 2 deletions src/Wt/WTreeView.C
Expand Up @@ -1062,8 +1062,8 @@ void WTreeView::defineJavaScript()
+ "');");

setJavaScriptMember(WT_RESIZE_JS,
"function(self,w,h) {"
"$(self).data('obj').wtResize();"
"function(self,w,h,s) {"
"""$(self).data('obj').wtResize();"
"}");
}

Expand Down
25 changes: 25 additions & 0 deletions src/js/FlexLayoutImpl.js
Expand Up @@ -11,6 +11,26 @@ WT_DECLARE_WT_MEMBER
function(APP, id) {
var WT = APP.WT;

function init() {
var el = WT.getElement(id);
if (!el) return;

var children = el.childNodes;
for (var i = 0; i < children.length; ++i) {
var c = children[i];
if (c.style.display == 'none' ||
$(c).hasClass('out') ||
c.className == 'resize-sensor')
continue;

var of = WT.css(c, 'overflow');
if (of === 'visible' || of === '')
c.style.overflow = 'hidden';
}
}

setTimeout(init, 0);

this.adjust = function(spacing) {
setTimeout(function() {
var el = WT.getElement(id);
Expand All @@ -36,11 +56,16 @@ WT_DECLARE_WT_MEMBER

for (var i = 0; i < children.length; ++i) {
var c = children[i];

if (c.style.display == 'none' ||
$(c).hasClass('out') ||
c.className == 'resize-sensor')
continue;

/* Re-trigger resize-sensor */
if (c.resizeSensor)
c.resizeSensor.trigger();

var stretch;

if (totalStretch === 0)
Expand Down
4 changes: 2 additions & 2 deletions src/js/FlexLayoutImpl.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 7 additions & 3 deletions src/js/ResizeSensor.js
Expand Up @@ -77,15 +77,19 @@ function(WT, element) {
shrink.scrollTop = 100000;
};

element.resizeSensor.trigger = function() {
if (element.wtResize)
element.wtResize(element, lastWidth, lastHeight, false);
};

reset();
var dirty = false;
var lastWidth, lastHeight;

var dirtyChecking = function() {
if (dirty) {
if (element.wtResize)
element.wtResize(element, lastWidth, lastHeight);
dirty = false;
element.resizeSensor.trigger();
dirty = false;
}

requestAnimationFrame(dirtyChecking);
Expand Down
4 changes: 2 additions & 2 deletions src/js/ResizeSensor.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions src/js/WCartesianChart.js
Expand Up @@ -11,6 +11,7 @@ WT_DECLARE_WT_MEMBER_BIG
// target: the WPaintedWidget JavaScript obj, with:
// repaint
// canvas
// combinedTransform is set by WCartesianChart
// config: the initial configuration (can be overridden with updateConfig)
// curveManipulation (determines whether series manipulation is enabled)
// seriesSelection (determines whether series selection is enabled)
Expand Down Expand Up @@ -375,7 +376,7 @@ WT_DECLARE_WT_MEMBER_BIG
}
if (tobj.tooltipOuterDiv) {
document.body.removeChild(tobj.tooltipOuterDiv);
tobj.tooltipEl = null;
tobj.toolTipEl = null;
tobj.tooltipOuterDiv = null;
}
}
Expand Down Expand Up @@ -638,6 +639,8 @@ WT_DECLARE_WT_MEMBER_BIG
}

function loadTooltip() {
if (tobj.toolTipEl)
return;
APP.emit(target.widget, "loadTooltip", tobj.tooltipPosition[X], tobj.tooltipPosition[Y]);
}

Expand Down Expand Up @@ -684,7 +687,7 @@ WT_DECLARE_WT_MEMBER_BIG
var c = WT.widgetCoordinates(target.canvas, event);
if (!isPointInRect(c, configArea())) return;

if (!tobj.tooltipEl && hasToolTips()) {
if (hasToolTips()) {
tobj.tooltipPosition = [c.x,c.y];
tobj.tooltipTimeout = setTimeout(function() {
loadTooltip();
Expand Down

0 comments on commit cd37d6e

Please sign in to comment.