+
{@_columns()}
diff --git a/src/components/scroll-region.cjsx b/src/components/scroll-region.cjsx
index d55e19a18..ab0bb24dc 100644
--- a/src/components/scroll-region.cjsx
+++ b/src/components/scroll-region.cjsx
@@ -136,16 +136,20 @@ class ScrollRegion extends React.Component
@_onHandleMove(event)
_onScroll: (event) =>
- @_recomputeDimensions()
- @props.onScroll?(event)
+ if not @_requestedAnimationFrame
+ @_requestedAnimationFrame = true
+ window.requestAnimationFrame =>
+ @_requestedAnimationFrame = false
+ @_recomputeDimensions()
+ @props.onScroll?(event)
- if not @state.scrolling
- @setState(scrolling: true)
+ if not @state.scrolling
+ @setState(scrolling: true)
- @_onStoppedScroll ?= _.debounce =>
- @setState(scrolling: false)
- , 250
- @_onStoppedScroll()
+ @_onStoppedScroll ?= _.debounce =>
+ @setState(scrolling: false)
+ , 250
+ @_onStoppedScroll()
module.exports = ScrollRegion
diff --git a/src/flux/stores/draft-store.coffee b/src/flux/stores/draft-store.coffee
index 0951ae8fc..28e3c8575 100644
--- a/src/flux/stores/draft-store.coffee
+++ b/src/flux/stores/draft-store.coffee
@@ -205,7 +205,7 @@ class DraftStore
@_newMessageWithContext context, (thread, message) ->
forwardMessage: message
- _newMessageWithContext: ({thread, threadId, message, messageId}, attributesCallback) =>
+ _newMessageWithContext: ({thread, threadId, message, messageId, popout}, attributesCallback) =>
return unless NamespaceStore.current()
# We accept all kinds of context. You can pass actual thread and message objects,
@@ -227,7 +227,7 @@ class DraftStore
queries.message = DatabaseStore.find(Message, messageId)
queries.message.include(Message.attributes.body)
else
- queries.message = DatabaseStore.findBy(Message, {threadId: threadId}).order(Message.attributes.date.descending()).limit(1)
+ queries.message = DatabaseStore.findBy(Message, {threadId: threadId ? thread.id}).order(Message.attributes.date.descending()).limit(1)
queries.message.include(Message.attributes.body)
# Waits for the query promises to resolve and then resolve with a hash
@@ -304,7 +304,9 @@ class DraftStore
@_draftSessions[draftLocalId] = new DraftStoreProxy(draftLocalId, draft)
DatabaseStore.bindToLocalId(draft, draftLocalId)
- DatabaseStore.persistModel(draft)
+ DatabaseStore.persistModel(draft).then =>
+ Actions.composePopoutDraft(draftLocalId) if popout
+
# Eventually we'll want a nicer solution for inline attachments
_formatBodyForQuoting: (body="") =>
diff --git a/static/components/scroll-region.less b/static/components/scroll-region.less
index be5f6c8bd..04a3715c0 100644
--- a/static/components/scroll-region.less
+++ b/static/components/scroll-region.less
@@ -13,6 +13,7 @@
transform: translate(-15px, 0);
position: relative;
white-space:nowrap;
+ pointer-events: none;
}
.scroll-tooltip:after, .scroll-tooltip:before {
left: 100%;
@@ -75,10 +76,12 @@
border-radius:8px;
.tooltip {
opacity: 0;
+ display:none;
transition: opacity 0.3s;
top: 50%;
transform: translate(-100%, -50%);
position: absolute;
+ pointer-events: none;
}
}
}
@@ -98,7 +101,8 @@
border:1px solid lighten(@gray, 20%);
.tooltip {
opacity: 1;
+ display:block;
}
}
}
-}
\ No newline at end of file
+}
diff --git a/static/variables/ui-variables.less b/static/variables/ui-variables.less
index 3960699d0..793a5ceb5 100644
--- a/static/variables/ui-variables.less
+++ b/static/variables/ui-variables.less
@@ -334,11 +334,11 @@
//** Text color of active list items
@list-selected-color: inherit;
//** Background color of active list items
-@list-selected-bg: fade(@component-active-color, 17%);
+@list-selected-bg: mix(@component-active-color, @list-bg, 17%);
//** Border color of active list elements
-@list-selected-border: fade(@component-active-color, 50%);
+@list-selected-border: mix(@component-active-color, @list-bg, 50%);
//** Text color for content within active list items
-@list-selected-color-muted: lighten(@list-selected-bg, 40%);
+@list-selected-color-muted: lighten(@list-selected-bg, 40%);
//** Text color of disabled list items
@list-disabled-color: @gray-light;