summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/fill-and-stroke.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/dialog/fill-and-stroke.cpp')
-rw-r--r--src/ui/dialog/fill-and-stroke.cpp45
1 files changed, 40 insertions, 5 deletions
diff --git a/src/ui/dialog/fill-and-stroke.cpp b/src/ui/dialog/fill-and-stroke.cpp
index fe63c6e24..8c86e1ca4 100644
--- a/src/ui/dialog/fill-and-stroke.cpp
+++ b/src/ui/dialog/fill-and-stroke.cpp
@@ -6,8 +6,10 @@
/* Authors:
* Bryce W. Harrington <bryce@bryceharrington.org>
* Gustav Broberg <broberg@kth.se>
+ * Jon A. Cruz <jon@joncruz.org>
*
* Copyright (C) 2004--2007 Authors
+ * Copyright (C) 2010 Jon A. Cruz
*
* Released under GNU GPL. Read the file 'COPYING' for more information.
*/
@@ -29,6 +31,8 @@
#include "widgets/stroke-style.h"
#include "xml/repr.h"
+#include "ui/view/view-widget.h"
+
namespace Inkscape {
namespace UI {
namespace Dialog {
@@ -38,7 +42,12 @@ FillAndStroke::FillAndStroke()
_page_fill(1, 1, true, true),
_page_stroke_paint(1, 1, true, true),
_page_stroke_style(1, 1, true, true),
- _composite_settings(SP_VERB_DIALOG_FILL_STROKE, "fillstroke", SimpleFilterModifier::BLUR)
+ _composite_settings(SP_VERB_DIALOG_FILL_STROKE, "fillstroke", UI::Widget::SimpleFilterModifier::BLUR),
+ deskTrack(),
+ targetDesktop(0),
+ fillWdgt(0),
+ strokeWdgt(0),
+ desktopChangeConn()
{
Gtk::Box *contents = _getContents();
contents->set_spacing(0);
@@ -58,25 +67,51 @@ FillAndStroke::FillAndStroke()
show_all_children();
_composite_settings.setSubject(&_subject);
+
+ // Connect this up last
+ desktopChangeConn = deskTrack.connectDesktopChanged( sigc::mem_fun(*this, &FillAndStroke::setTargetDesktop) );
+ deskTrack.connect(GTK_WIDGET(gobj()));
}
FillAndStroke::~FillAndStroke()
{
_composite_settings.setSubject(NULL);
+
+ desktopChangeConn.disconnect();
+ deskTrack.disconnect();
+}
+
+void FillAndStroke::setDesktop(SPDesktop *desktop)
+{
+ Panel::setDesktop(desktop);
+ deskTrack.setBase(desktop);
+}
+
+void FillAndStroke::setTargetDesktop(SPDesktop *desktop)
+{
+ if (targetDesktop != desktop) {
+ targetDesktop = desktop;
+ if (fillWdgt) {
+ sp_fill_style_widget_set_desktop(fillWdgt, desktop);
+ }
+ if (strokeWdgt) {
+ sp_stroke_style_widget_set_desktop(strokeWdgt, desktop);
+ }
+ }
}
void
FillAndStroke::_layoutPageFill()
{
- Gtk::Widget *fs = manage(Glib::wrap(sp_fill_style_widget_new()));
- _page_fill.table().attach(*fs, 0, 1, 0, 1);
+ fillWdgt = manage(sp_fill_style_widget_new());
+ _page_fill.table().attach(*fillWdgt, 0, 1, 0, 1);
}
void
FillAndStroke::_layoutPageStrokePaint()
{
- Gtk::Widget *ssp = manage(Glib::wrap(sp_stroke_style_paint_widget_new()));
- _page_stroke_paint.table().attach(*ssp, 0, 1, 0, 1);
+ strokeWdgt = manage(sp_stroke_style_paint_widget_new());
+ _page_stroke_paint.table().attach(*strokeWdgt, 0, 1, 0, 1);
}
void