From 138592aa56cfa2fc4fddcb016bb3186613f2f73b Mon Sep 17 00:00:00 2001 From: Jabiertxof Date: Tue, 13 Nov 2018 19:16:18 +0100 Subject: Add some Martin fixes and UX improvements --- src/desktop.cpp | 9 ++- src/desktop.h | 4 +- src/display/sp-canvas.cpp | 130 ++++++++++++----------------------------- src/display/sp-canvas.h | 6 +- src/widgets/desktop-widget.cpp | 12 ---- src/widgets/desktop-widget.h | 1 - 6 files changed, 46 insertions(+), 116 deletions(-) (limited to 'src') diff --git a/src/desktop.cpp b/src/desktop.cpp index ad9c2efbd..a6bd3ef83 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -937,7 +937,7 @@ SPDesktop::get_vruler_thickness() } guint -SPDesktop::get_hscrool_thickness() +SPDesktop::get_hscroll_thickness() { Gtk::Window *parent = getToplevel(); if (parent) { @@ -950,7 +950,7 @@ SPDesktop::get_hscrool_thickness() } guint -SPDesktop::get_vscrool_thickness() +SPDesktop::get_vscroll_thickness() { Gtk::Window *parent = getToplevel(); if (parent) { @@ -964,8 +964,8 @@ SPDesktop::get_vscrool_thickness() int get_hruler_thickness(); int get_vruler_thickness(); - int get_vscrool_thickness(); - int get_hscrool_thickness(); + int get_vscroll_thickness(); + int get_hscroll_thickness(); /** * Zoom keeping the point 'c' fixed in the desktop window. @@ -1612,7 +1612,6 @@ void SPDesktop::toggleSplitMode() prefs->setBool("/window/splitcanvas/inverse", false); prefs->setDouble("/window/splitcanvas/value", 0.5); SPDesktopWidget *dtw = static_cast(parent->get_data("desktopwidget")); - dtw->splitCanvas(_split_canvas); GtkAllocation allocation; gtk_widget_get_allocation(GTK_WIDGET(dtw->canvas), &allocation); SPCanvas * canvas = getCanvas(); diff --git a/src/desktop.h b/src/desktop.h index 1d291bea5..17b34b1a2 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -440,8 +440,8 @@ public: void mouseout() override {} guint get_hruler_thickness(); guint get_vruler_thickness(); - guint get_vscrool_thickness(); - guint get_hscrool_thickness(); + guint get_vscroll_thickness(); + guint get_hscroll_thickness(); virtual bool onDeleteUI (GdkEventAny*); virtual bool onWindowStateEvent (GdkEventWindowState* event); diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index 7cb7daf97..d61489863 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -981,10 +981,8 @@ static void sp_canvas_init(SPCanvas *canvas) canvas->_forced_redraw_count = 0; canvas->_forced_redraw_limit = -1; - canvas->_oversplit_top = false; - canvas->_oversplit_bottom = false; - canvas->_oversplit_left = false; - canvas->_oversplit_right = false; + canvas->_oversplit_vertical = false; + canvas->_oversplit_horizontal = false; canvas->_spliter = Geom::OptIntRect(); canvas->_spliter = Geom::OptIntRect(); canvas->_spliter_control = Geom::OptIntRect(); @@ -1263,21 +1261,9 @@ int SPCanvas::emitEvent(GdkEvent *event) ev->crossing.y += _y0; break; case GDK_MOTION_NOTIFY: - ev->motion.x += _x0; - ev->motion.y += _y0; - break; case GDK_BUTTON_PRESS: - ev->motion.x += _x0; - ev->motion.y += _y0; - break; case GDK_2BUTTON_PRESS: - ev->motion.x += _x0; - ev->motion.y += _y0; - break; case GDK_3BUTTON_PRESS: - ev->motion.x += _x0; - ev->motion.y += _y0; - break; case GDK_BUTTON_RELEASE: ev->motion.x += _x0; ev->motion.y += _y0; @@ -1563,25 +1549,15 @@ gint SPCanvas::handle_button(GtkWidget *widget, GdkEventButton *event) bool spliter_clicked = false; bool reset = false; if (!canvas->_splitdragging) { - if(canvas->_oversplit_top) { + if(canvas->_oversplit_vertical) { + prefs->setBool("/window/splitcanvas/inverse", !inverse); prefs->setBool("/window/splitcanvas/vertical", false); - prefs->setBool("/window/splitcanvas/inverse", true); reset = vertical? true: false; spliter_clicked = true; - } else if (canvas->_oversplit_bottom) { - prefs->setBool("/window/splitcanvas/vertical", false); - prefs->setBool("/window/splitcanvas/inverse", false); - reset = vertical? true: false; - spliter_clicked = true; - } else if (canvas->_oversplit_left) { + } else if (canvas->_oversplit_horizontal) { + prefs->setBool("/window/splitcanvas/inverse", !inverse); prefs->setBool("/window/splitcanvas/vertical", true); - prefs->setBool("/window/splitcanvas/inverse", true); - reset = vertical? false : true; - spliter_clicked = true; - } else if (canvas->_oversplit_right) { - prefs->setBool("/window/splitcanvas/vertical", true); - prefs->setBool("/window/splitcanvas/inverse", false); - reset = vertical? false : true; + reset = !vertical? true: false; spliter_clicked = true; } if (spliter_clicked) { @@ -1629,8 +1605,7 @@ void SPCanvas::set_cursor(GtkWidget *widget) if (desktop && desktop->splitMode()) { GdkDisplay *display = gdk_display_get_default(); GdkCursor *cursor = nullptr; - if (canvas->_oversplit_top) - { + if (canvas->_oversplit_vertical) { if (canvas->_changecursor != 1) { cursor = gdk_cursor_new_from_name (display, "pointer"); gdk_window_set_cursor (gtk_widget_get_window(widget), cursor); @@ -1638,7 +1613,7 @@ void SPCanvas::set_cursor(GtkWidget *widget) canvas->paintSpliter(); } canvas->_changecursor = 1; - } else if (canvas->_oversplit_bottom) { + } else if (canvas->_oversplit_horizontal) { if (canvas->_changecursor != 2) { cursor = gdk_cursor_new_from_name (display, "pointer"); gdk_window_set_cursor (gtk_widget_get_window(widget), cursor); @@ -1646,24 +1621,8 @@ void SPCanvas::set_cursor(GtkWidget *widget) canvas->paintSpliter(); } canvas->_changecursor = 2; - } else if (canvas->_oversplit_left) { - if (canvas->_changecursor != 3) { - cursor = gdk_cursor_new_from_name (display, "pointer"); - gdk_window_set_cursor (gtk_widget_get_window(widget), cursor); - g_object_unref (cursor); - canvas->paintSpliter(); - } - canvas->_changecursor = 3; - } else if (canvas->_oversplit_right) { - if (canvas->_changecursor != 4) { - cursor = gdk_cursor_new_from_name (display, "pointer"); - gdk_window_set_cursor (gtk_widget_get_window(widget), cursor); - g_object_unref (cursor); - canvas->paintSpliter(); - } - canvas->_changecursor = 4; } else if (canvas->_oversplit) { - if (canvas->_changecursor != 5) { + if (canvas->_changecursor != 3) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); bool vertical = prefs->getBool("/window/splitcanvas/vertical", true); if(vertical) { @@ -1675,16 +1634,13 @@ void SPCanvas::set_cursor(GtkWidget *widget) g_object_unref (cursor); canvas->paintSpliter(); } - canvas->_changecursor = 5; + canvas->_changecursor = 3; } else { - if (desktop && desktop->event_context && !canvas->_splitpressed && canvas->_changecursor != 6) { + if (desktop && desktop->event_context && !canvas->_splitpressed && canvas->_changecursor != 4) { desktop->event_context->sp_event_context_update_cursor(); canvas->paintSpliter(); } - canvas->_changecursor = 6; - } - if(canvas->_splitpressed) { - canvas->paintSpliter(); + canvas->_changecursor = 4; } } } @@ -1711,26 +1667,28 @@ int SPCanvas::handle_motion(GtkWidget *widget, GdkEventMotion *event) } else { canvas->_oversplit = false; } - if (canvas->_spliter_top && (*canvas->_spliter_top).contains(cursor_pos) && !canvas->_is_dragging) { - canvas->_oversplit_top = true; - } else { - canvas->_oversplit_top = false; - } - if (canvas->_spliter_bottom && (*canvas->_spliter_bottom).contains(cursor_pos) && !canvas->_is_dragging) { - canvas->_oversplit_bottom = true; - } else { - canvas->_oversplit_bottom = false; - } - if (canvas->_spliter_left && (*canvas->_spliter_left).contains(cursor_pos) && !canvas->_is_dragging) { - canvas->_oversplit_left = true; + if (canvas->_spliter_left && + canvas->_spliter_right && + ((*canvas->_spliter_left).contains(cursor_pos) || + (*canvas->_spliter_right).contains(cursor_pos)) && + !canvas->_is_dragging) + { + canvas->_oversplit_horizontal = true; } else { - canvas->_oversplit_left = false; - } - if (canvas->_spliter_right && (*canvas->_spliter_right).contains(cursor_pos) && !canvas->_is_dragging) { - canvas->_oversplit_right = true; + canvas->_oversplit_horizontal = false; + } + if (!canvas->_oversplit_horizontal && + canvas->_spliter_top && + canvas->_spliter_bottom && + ((*canvas->_spliter_top).contains(cursor_pos) || + (*canvas->_spliter_bottom).contains(cursor_pos)) && + !canvas->_is_dragging) + { + canvas->_oversplit_vertical = true; } else { - canvas->_oversplit_right = false; + canvas->_oversplit_vertical = false; } + canvas->set_cursor(widget); if (canvas->_splitpressed) { GtkAllocation allocation; @@ -1744,10 +1702,8 @@ int SPCanvas::handle_motion(GtkWidget *widget, GdkEventMotion *event) desktop->toggleSplitMode(); canvas->_splitpressed = false; canvas->_oversplit = false; - canvas->_oversplit_top = false; - canvas->_oversplit_bottom = false; - canvas->_oversplit_left = false; - canvas->_oversplit_right = false; + canvas->_oversplit_vertical = false; + canvas->_oversplit_horizontal = false; } } else { prefs->setDouble("/window/splitcanvas/value", value); @@ -1940,41 +1896,31 @@ void SPCanvas::paintSpliter() cairo_line_to(ct, 20,2.630586); cairo_line_to(ct, 24.769272,10.891209); cairo_close_path(ct); - if (canvas->_oversplit_top) { + if (canvas->_oversplit_vertical) { cairo_set_source_rgba (ct, 0.90, 0.90, 0.90, 1); } else { - cairo_set_source_rgba (ct, 0.7, 0.7, 0.7, 1); + cairo_set_source_rgba (ct, 0.6, 0.6, 0.6, 1); } cairo_fill(ct); cairo_move_to(ct, 15.230728,29.03051); cairo_line_to(ct, 20,37.29113); cairo_line_to(ct, 24.769272,29.030509); cairo_close_path(ct); - if (canvas->_oversplit_bottom) { - cairo_set_source_rgba (ct, 0.90, 0.90, 0.90, 1); - } else { - cairo_set_source_rgba (ct, 0.7, 0.7, 0.7, 1); - } cairo_fill(ct); cairo_move_to(ct, 11.109859,15.230724); cairo_line_to(ct, 2.8492384,19.999997); cairo_line_to(ct, 11.109861,24.769269); cairo_close_path(ct); - if (canvas->_oversplit_left) { + if (canvas->_oversplit_horizontal) { cairo_set_source_rgba (ct, 0.90, 0.90, 0.90, 1); } else { - cairo_set_source_rgba (ct, 0.7, 0.7, 0.7, 1); + cairo_set_source_rgba (ct, 0.6, 0.6, 0.6, 1); } cairo_fill(ct); cairo_move_to(ct, 29.249158,15.230724); cairo_line_to(ct, 37.509779,19.999997); cairo_line_to(ct, 29.249158,24.769269); cairo_close_path(ct); - if (canvas->_oversplit_right) { - cairo_set_source_rgba (ct, 0.90, 0.90, 0.90, 1); - } else { - cairo_set_source_rgba (ct, 0.7, 0.7, 0.7, 1); - } cairo_fill(ct); cairo_scale(ct, 1/ds, 1/ds); cairo_translate(ct, -middle[0]-(20 * ds), -middle[1]-(20 * ds)); diff --git a/src/display/sp-canvas.h b/src/display/sp-canvas.h index 045df291a..d58a93dc0 100644 --- a/src/display/sp-canvas.h +++ b/src/display/sp-canvas.h @@ -183,10 +183,8 @@ public: Geom::OptIntRect _spliter_bottom; Geom::OptIntRect _spliter_left; Geom::OptIntRect _spliter_right; - bool _oversplit_top; - bool _oversplit_bottom; - bool _oversplit_left; - bool _oversplit_right; + bool _oversplit_vertical; + bool _oversplit_horizontal; bool _is_dragging; bool _oversplit; bool _splitpressed; diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index d5192db4b..6a69907ce 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -781,18 +781,6 @@ SPDesktopWidget::dispose(GObject *object) } } -void -SPDesktopWidget::splitCanvas(bool split) -{ - if(split) { - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - double split_x = prefs->getDoubleLimited("/window/splitcanvas/x", 0.5, 0, 1); - double split_y = prefs->getDoubleLimited("/window/splitcanvas/y", 1 , 0, 1); - int width = gtk_widget_get_allocated_width(GTK_WIDGET(this->canvas)); - int height = gtk_widget_get_allocated_height(GTK_WIDGET(this->canvas)); - } else { - } -} /** * Set the title in the desktop-window (if desktop has an own window). * diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h index ec454eb4f..198fd23c6 100644 --- a/src/widgets/desktop-widget.h +++ b/src/widgets/desktop-widget.h @@ -253,7 +253,6 @@ public: void requestCanvasUpdateAndWait(); void enableInteraction(); void disableInteraction(); - void splitCanvas(bool split); void updateTitle(gchar const *uri); bool onFocusInEvent(GdkEventFocus*); -- cgit v1.2.3