...
 
Commits (5)
  • L. E. Segovia's avatar
    Update SeExpr version · 325dd1de
    L. E. Segovia authored
    Before this commit, Krita would crash when creating vector variables.
    
    When initializing vector variables' widgets with a specified range,
    or attempting to change their value, SeExpr would try to access an
    uninitialized member. The check for null does not work because it was
    never initialized in the first place.
    
    Additionally, I fixed this widget so that it would correctly allow
    vectors with explicit [0, 1] range to be previewed as color variables.
    325dd1de
  • L. E. Segovia's avatar
    Revert "Update SeExpr version" · cf3b888c
    L. E. Segovia authored
    This reverts commit 325dd1de.
    cf3b888c
  • L. E. Segovia's avatar
    Update SeExpr version · c0495fb7
    L. E. Segovia authored
    Before this commit, Krita would crash when creating vector variables.
    
    When initializing vector variables' widgets with a specified range,
    or attempting to change their value, SeExpr would try to access an
    uninitialized member. The check for null does not work because it was
    never initialized in the first place.
    
    Additionally, I fixed this widget so that it would correctly allow
    vectors with explicit [0, 1] range to be previewed as color variables.
    c0495fb7
  • Eoin O'Neill's avatar
    Hotfix for canvas crashing on closing when having more than one document open. · 838a1292
    Eoin O'Neill authored
    Let's make sure the canvas we're setting `null` is the right one, shall we? :)
    This should solve the crash without reintroducing the soft-lock on graphics
    acceleration changes.
    
    BUG:424787
    838a1292
  • Eoin O'Neill's avatar
    Correctly flush cache after image-resize operations. · ff88461a
    Eoin O'Neill authored
    CCBUG:424111
    
    Basic cache flushing on layer transforming... Doesn't work with undo.
    ff88461a
......@@ -2,7 +2,7 @@ SET(PREFIX_ext_seexpr "${EXTPREFIX}" )
ExternalProject_Add(
ext_seexpr
GIT_REPOSITORY https://invent.kde.org/lsegovia/SeExpr.git
GIT_TAG 9c9442c965346325ec7d67c76e139707aa9d3d43
GIT_TAG 74737606c01c8a591659c1561b07b695c70f6997
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_seexpr} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} -DFLAVOR=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} -DBOOST_INCLUDE_DIR=${PREFIX_ext_seexpr}/include -DBOOST_ROOT=${PREFIX_ext_seexpr} -DBOOST_LIB_DIR=${PREFIX_ext_seexpr}/lib -DENABLE_LLVM_BACKEND=OFF -DENABLE_SSE4=OFF -DBUILD_DOC=OFF -DBUILD_TESTS=OFF -DBUILD_UTILS=OFF -DUSE_PYTHON=OFF
......
......@@ -50,6 +50,7 @@
#include "kis_pixel_selection.h"
#include "kis_repeat_iterators_pixel.h"
#include "kis_fixed_paint_device.h"
#include "kis_time_range.h"
#include "tiles3/kis_hline_iterator.h"
#include "tiles3/kis_vline_iterator.h"
......@@ -1152,6 +1153,14 @@ void KisPaintDevice::setDirty(const QVector<QRect> &rects)
m_d->parent->setDirty(rects);
}
void KisPaintDevice::requestRegenerateCurrentFrameCache()
{
if (m_d->parent.isValid() && m_d->parent->graphListener()) {
KisTimeRange affectedFrames = m_d->contentChannel->affectedFrames(defaultBounds()->currentTime());
m_d->parent->graphListener()->invalidateFrames(affectedFrames, exactBounds());
}
}
void KisPaintDevice::requestTimeSwitch(int time)
{
if (m_d->parent.isValid()) {
......
......@@ -777,6 +777,13 @@ public:
void setDirty(const QVector<QRect> &rects);
/**
* Try to regenerate the animation cache associated with a given paint device on
* the current frame. NOTICE: There's probably a better way to verify that
* frame cache needs to be flushed, this process should be more automated.
*/
void requestRegenerateCurrentFrameCache();
/**
* Called by KisTransactionData when it thinks current time should
* be changed. And the requests is forwarded to the image if
......
......@@ -81,11 +81,12 @@ void KisSelectionBasedProcessingHelper::transformPaintDevice(KisPaintDeviceSP de
device->clearSelection(m_cutSelection);
KisPainter::copyAreaOptimized(pasteBounds.topLeft(), tempDev, device, pasteBounds, m_selection);
transaction.commit(undoAdapter);
device->requestRegenerateCurrentFrameCache();
}
} else {
KisTransaction transaction(device);
func(device);
transaction.commit(undoAdapter);
device->requestRegenerateCurrentFrameCache();
}
}
......@@ -207,7 +207,6 @@ void KisTransformProcessingVisitor::transformPaintDevice(KisPaintDeviceSP device
this,
std::placeholders::_1,
helper.updater()));
}
void KisTransformProcessingVisitor::transformOneDevice(KisPaintDeviceSP device,
......
......@@ -473,7 +473,6 @@ bool KisInputManager::eventFilterImpl(QEvent * event)
d->allowMouseEvents();
d->touchHasBlockedPressEvents = false;
}
d->matcher.enterEvent();
break;
case QEvent::Leave:
......
......@@ -259,8 +259,10 @@ void KisInputManager::Private::CanvasSwitcher::removeCanvas(KisCanvas2 *canvas)
widget->removeEventFilter(this);
d->canvas = 0;
d->toolProxy = 0;
if (d->canvas == canvas) {
d->canvas = 0;
d->toolProxy = 0;
}
}
bool isInputWidget(QWidget *w)
......