summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-10-09 09:10:05 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-10-09 09:10:05 +0000
commitdcf50d59513395c1752df0f0f6d1840de84eaf01 (patch)
tree9bed4db23a616ea6a68b124c70af3efc4fdd9d3f /src
parentReduce spacing between entries in Unicode Character dialog. Bump up font-size. (diff)
downloadinkscape-dcf50d59513395c1752df0f0f6d1840de84eaf01.tar.gz
inkscape-dcf50d59513395c1752df0f0f6d1840de84eaf01.zip
Fix split and xray changes not always toggled
Diffstat (limited to 'src')
-rw-r--r--src/desktop.cpp33
-rw-r--r--src/display/sp-canvas.cpp22
2 files changed, 27 insertions, 28 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index a8533ee3b..76d534f50 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -515,11 +515,17 @@ void SPDesktop::_setDisplayMode(Inkscape::RenderMode mode) {
canvas->_rendermode = mode;
_display_mode = mode;
if (_display_mode == Inkscape::RENDERMODE_OUTLINE) {
- _split_canvas = false;
+ if (_split_canvas) {
+ toggleSplitMode();
+ }
+ if (_xray) {
+ toggleXRay();
+ }
}
redrawDesktop();
_widget->setTitle( this->getDocument()->getDocumentName() );
}
+
void SPDesktop::_setDisplayColorMode(Inkscape::ColorMode mode) {
// reload grayscale matrix from prefs
if (mode == Inkscape::COLORMODE_GRAYSCALE) {
@@ -580,9 +586,6 @@ bool SPDesktop::displayModeToggle()
_menu_update.emit(verb->get_code(), setDisplayModeNormal());
}
}
- if (_display_mode == Inkscape::RENDERMODE_OUTLINE) {
- _split_canvas = false;
- }
return true;
}
bool SPDesktop::displayColorModeToggle()
@@ -1661,11 +1664,7 @@ void SPDesktop::toggleSplitMode()
if (this->getToplevel()) {
_split_canvas = !_split_canvas;
if (_split_canvas && _xray) {
- _xray = !_xray;
- Inkscape::Verb *verb = Inkscape::Verb::get(SP_VERB_VIEW_TOGGLE_XRAY);
- if (verb) {
- _menu_update.emit(verb->get_code(), xrayMode());
- }
+ toggleXRay();
}
SPCanvas *canvas = getCanvas();
canvas->requestFullRedraw();
@@ -1673,6 +1672,11 @@ void SPDesktop::toggleSplitMode()
if (verb) {
_menu_update.emit(verb->get_code(), splitMode());
}
+ if (_display_mode == Inkscape::RENDERMODE_OUTLINE) {
+ if (_split_canvas) {
+ toggleSplitMode();
+ }
+ }
}
}
@@ -1681,11 +1685,7 @@ void SPDesktop::toggleXRay()
if (this->getToplevel()) {
_xray = !_xray;
if (_split_canvas && _xray) {
- _split_canvas = !_split_canvas;
- Inkscape::Verb *verb = Inkscape::Verb::get(SP_VERB_VIEW_TOGGLE_SPLIT);
- if (verb) {
- _menu_update.emit(verb->get_code(), splitMode());
- }
+ toggleSplitMode();
}
SPCanvas *canvas = getCanvas();
canvas->requestFullRedraw();
@@ -1693,6 +1693,11 @@ void SPDesktop::toggleXRay()
if (verb) {
_menu_update.emit(verb->get_code(), xrayMode());
}
+ if (_display_mode == Inkscape::RENDERMODE_OUTLINE) {
+ if (_xray) {
+ toggleXRay();
+ }
+ }
}
}
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp
index 5014343e0..60415d71d 100644
--- a/src/display/sp-canvas.cpp
+++ b/src/display/sp-canvas.cpp
@@ -1235,8 +1235,7 @@ void SPCanvas::handle_size_allocate(GtkWidget *widget, GtkAllocation *allocation
// Schedule redraw of any newly exposed regions
canvas->_split_value = 0.5;
canvas->_spliter_control_pos = Geom::Point();
- canvas->dirtyAll();
- canvas->addIdle();
+ canvas->requestFullRedraw();
}
int SPCanvas::emitEvent(GdkEvent *event)
@@ -1606,8 +1605,7 @@ gint SPCanvas::handle_button(GtkWidget *widget, GdkEventButton *event)
canvas->_split_vertical = true;
}
if (spliter_clicked) {
- canvas->dirtyAll();
- canvas->addIdle();
+ canvas->requestFullRedraw();
}
}
canvas->_split_control_pressed = false;
@@ -1725,7 +1723,7 @@ int SPCanvas::handle_motion(GtkWidget *widget, GdkEventMotion *event)
}
canvas->set_cursor(widget);
- if (canvas->_split_pressed) {
+ if (canvas->_split_pressed && desktop && desktop->event_context && desktop->splitMode()) {
GtkAllocation allocation;
canvas->_split_dragging = true;
gtk_widget_get_allocation(GTK_WIDGET(canvas), &allocation);
@@ -1744,14 +1742,11 @@ int SPCanvas::handle_motion(GtkWidget *widget, GdkEventMotion *event)
canvas->_spliter_control_pos = cursor_pos - canvas->_spliter_in_control_pos;
}
}
- canvas->dirtyAll();
- canvas->addIdle();
+ canvas->requestFullRedraw();
status = 1;
} else {
if (desktop && desktop->event_context && desktop->xrayMode()) {
- if (canvas->_xray) {
- sp_reset_spliter(canvas);
- }
+ sp_reset_spliter(canvas);
Geom::Point prev_orig = canvas->_xray_orig;
canvas->_xray_orig = desktop->point(true);
canvas->_xray_orig *= desktop->current_zoom();
@@ -2435,6 +2430,7 @@ int SPCanvas::paint()
to_draw = cairo_region_create_rectangle(&crect);
to_draw_outline = cairo_region_create_rectangle(&crect_outline);
}
+
cairo_region_get_extents(_clean_region, &crect);
draw = cairo_region_create_rectangle(&crect);
cairo_region_subtract(draw, _clean_region);
@@ -2775,8 +2771,7 @@ void SPCanvas::setBackgroundColor(guint32 rgba) {
}
_background = cairo_pattern_create_rgb(new_r, new_g, new_b);
_background_is_checkerboard = false;
- dirtyAll();
- addIdle();
+ requestFullRedraw();
}
void SPCanvas::setBackgroundCheckerboard(guint32 rgba)
@@ -2787,8 +2782,7 @@ void SPCanvas::setBackgroundCheckerboard(guint32 rgba)
}
_background = ink_cairo_pattern_create_checkerboard(rgba);
_background_is_checkerboard = true;
- dirtyAll();
- addIdle();
+ requestFullRedraw();
}
/**