summaryrefslogtreecommitdiffstats
path: root/src/dialogs
diff options
context:
space:
mode:
authorgustav_b <gustav_b@users.sourceforge.net>2007-12-07 01:41:04 +0000
committergustav_b <gustav_b@users.sourceforge.net>2007-12-07 01:41:04 +0000
commit1d22b74180777745a27e7ddbd3006c950063cf41 (patch)
treedf270c16e2856da62210ce610e3da52c45fe6c0d /src/dialogs
parentFized crashes & odd behaviour when resizing, zooming and rotating feTurbulence (diff)
downloadinkscape-1d22b74180777745a27e7ddbd3006c950063cf41.tar.gz
inkscape-1d22b74180777745a27e7ddbd3006c950063cf41.zip
Rework dialog management. Use singleton behavior for dialogs when
started in floating dialogs mode and use one dialog/desktop behavior when started in dockable dialogs mode. Replace the panels use of the SP_ACTIVE_DESKTOP macro and unify the panels' handling of desktop activation events. (bzr r4188)
Diffstat (limited to 'src/dialogs')
-rw-r--r--src/dialogs/extensions.cpp13
-rw-r--r--src/dialogs/extensions.h6
-rw-r--r--src/dialogs/iconpreview.cpp12
-rw-r--r--src/dialogs/iconpreview.h2
-rw-r--r--src/dialogs/layers-panel.cpp16
-rw-r--r--src/dialogs/layers-panel.h2
-rw-r--r--src/dialogs/swatches.cpp8
-rw-r--r--src/dialogs/tiledialog.cpp10
8 files changed, 22 insertions, 47 deletions
diff --git a/src/dialogs/extensions.cpp b/src/dialogs/extensions.cpp
index 36ec67744..e363df607 100644
--- a/src/dialogs/extensions.cpp
+++ b/src/dialogs/extensions.cpp
@@ -25,18 +25,13 @@ namespace Dialogs {
using Inkscape::Extension::Extension;
-ExtensionsPanel* ExtensionsPanel::instance = 0;
-
-
-ExtensionsPanel& ExtensionsPanel::getInstance()
+ExtensionsPanel &ExtensionsPanel::getInstance()
{
- if ( !instance ) {
- instance = new ExtensionsPanel();
- }
+ ExtensionsPanel &instance = *new ExtensionsPanel();
- instance->rescan();
+ instance.rescan();
- return *instance;
+ return instance;
}
diff --git a/src/dialogs/extensions.h b/src/dialogs/extensions.h
index f4dbada9e..e253ab849 100644
--- a/src/dialogs/extensions.h
+++ b/src/dialogs/extensions.h
@@ -34,7 +34,7 @@ class ExtensionsPanel : public Inkscape::UI::Widget::Panel
public:
ExtensionsPanel();
- static ExtensionsPanel& getInstance();
+ static ExtensionsPanel &getInstance();
void set_full(bool full);
@@ -42,9 +42,7 @@ private:
ExtensionsPanel(ExtensionsPanel const &); // no copy
ExtensionsPanel &operator=(ExtensionsPanel const &); // no assign
- static ExtensionsPanel* instance;
-
- static void listCB( Inkscape::Extension::Extension * in_plug, gpointer in_data );
+ static void listCB(Inkscape::Extension::Extension *in_plug, gpointer in_data);
void rescan();
diff --git a/src/dialogs/iconpreview.cpp b/src/dialogs/iconpreview.cpp
index c36414705..e61b7d7f9 100644
--- a/src/dialogs/iconpreview.cpp
+++ b/src/dialogs/iconpreview.cpp
@@ -47,18 +47,14 @@ namespace UI {
namespace Dialogs {
-IconPreviewPanel* IconPreviewPanel::instance = 0;
-
IconPreviewPanel&
IconPreviewPanel::getInstance()
{
- if ( !instance ) {
- instance = new IconPreviewPanel();
- }
+ IconPreviewPanel &instance = *new IconPreviewPanel();
- instance->refreshPreview();
+ instance.refreshPreview();
- return *instance;
+ return instance;
}
//#########################################################################
@@ -214,7 +210,7 @@ IconPreviewPanel::IconPreviewPanel() :
void IconPreviewPanel::refreshPreview()
{
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ SPDesktop *desktop = getDesktop();
if ( desktop ) {
if ( selectionButton && selectionButton->get_active() )
diff --git a/src/dialogs/iconpreview.h b/src/dialogs/iconpreview.h
index 0f34dda4e..3a3652334 100644
--- a/src/dialogs/iconpreview.h
+++ b/src/dialogs/iconpreview.h
@@ -53,8 +53,6 @@ private:
void renderPreview( SPObject* obj );
void updateMagnify();
- static IconPreviewPanel* instance;
-
Gtk::Tooltips tips;
Gtk::VBox iconBox;
diff --git a/src/dialogs/layers-panel.cpp b/src/dialogs/layers-panel.cpp
index ff18c82b4..36105c41c 100644
--- a/src/dialogs/layers-panel.cpp
+++ b/src/dialogs/layers-panel.cpp
@@ -44,16 +44,10 @@ namespace Inkscape {
namespace UI {
namespace Dialogs {
-LayersPanel* LayersPanel::instance = 0;
-
LayersPanel&
LayersPanel::getInstance()
{
- if ( !instance ) {
- instance = new LayersPanel();
- }
-
- return *instance;
+ return *new LayersPanel();
}
enum {
@@ -193,7 +187,7 @@ static gboolean layers_panel_activated( GtkObject */*object*/, GdkEvent * /*even
if ( data )
{
LayersPanel* panel = reinterpret_cast<LayersPanel*>(data);
- panel->setDesktop( SP_ACTIVE_DESKTOP );
+ panel->setDesktop(panel->getDesktop());
}
return FALSE;
@@ -783,7 +777,7 @@ LayersPanel::LayersPanel() :
_opacityConnection = _opacity.get_adjustment()->signal_value_changed().connect( sigc::mem_fun(*this, &LayersPanel::_opacityChanged) );
- SPDesktop* targetDesktop = SP_ACTIVE_DESKTOP;
+ SPDesktop* targetDesktop = getDesktop();
_buttonsRow.set_child_min_width( 16 );
@@ -880,6 +874,8 @@ LayersPanel::~LayersPanel()
void LayersPanel::setDesktop( SPDesktop* desktop )
{
+ Panel::setDesktop(desktop);
+
if ( desktop != _desktop ) {
_layerChangedConnection.disconnect();
_layerUpdatedConnection.disconnect();
@@ -891,7 +887,7 @@ void LayersPanel::setDesktop( SPDesktop* desktop )
_desktop = 0;
}
- _desktop = SP_ACTIVE_DESKTOP;
+ _desktop = getDesktop();
if ( _desktop ) {
//setLabel( _desktop->doc()->name );
diff --git a/src/dialogs/layers-panel.h b/src/dialogs/layers-panel.h
index 981d32027..7f56b3f7e 100644
--- a/src/dialogs/layers-panel.h
+++ b/src/dialogs/layers-panel.h
@@ -58,8 +58,6 @@ private:
LayersPanel(LayersPanel const &); // no copy
LayersPanel &operator=(LayersPanel const &); // no assign
- static LayersPanel* instance;
-
void _styleButton( Gtk::Button& btn, SPDesktop *desktop, unsigned int code, char const* iconName, char const* fallback );
void _fireAction( unsigned int code );
Gtk::MenuItem& _addPopupItem( SPDesktop *desktop, unsigned int code, char const* iconName, char const* fallback, int id );
diff --git a/src/dialogs/swatches.cpp b/src/dialogs/swatches.cpp
index 829b06cb6..e4cf9e926 100644
--- a/src/dialogs/swatches.cpp
+++ b/src/dialogs/swatches.cpp
@@ -41,8 +41,6 @@ namespace Inkscape {
namespace UI {
namespace Dialogs {
-SwatchesPanel* SwatchesPanel::instance = 0;
-
ColorItem::ColorItem( unsigned int r, unsigned int g, unsigned int b, Glib::ustring& name ) :
def( r, g, b, name ),
@@ -989,11 +987,7 @@ static void loadEmUp()
SwatchesPanel& SwatchesPanel::getInstance()
{
- if ( !instance ) {
- instance = new SwatchesPanel();
- }
-
- return *instance;
+ return *new SwatchesPanel();
}
diff --git a/src/dialogs/tiledialog.cpp b/src/dialogs/tiledialog.cpp
index 4a60d4413..3ea423b5b 100644
--- a/src/dialogs/tiledialog.cpp
+++ b/src/dialogs/tiledialog.cpp
@@ -161,7 +161,7 @@ void TileDialog::Grid_Arrange ()
grid_left = 99999;
grid_top = 99999;
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ SPDesktop *desktop = getDesktop();
sp_document_ensure_up_to_date(sp_desktop_document(desktop));
Inkscape::Selection *selection = sp_desktop_selection (desktop);
@@ -378,7 +378,7 @@ void TileDialog::on_row_spinbutton_changed()
// in turn, prevent listener from responding
updating = true;
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ SPDesktop *desktop = getDesktop();
Inkscape::Selection *selection = sp_desktop_selection (desktop);
@@ -403,7 +403,7 @@ void TileDialog::on_col_spinbutton_changed()
// in turn, prevent listener from responding
updating = true;
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ SPDesktop *desktop = getDesktop();
Inkscape::Selection *selection = sp_desktop_selection (desktop);
GSList const *items = selection->itemList();
@@ -565,7 +565,7 @@ void TileDialog::updateSelection()
row_height=0;
// in turn, prevent listener from responding
updating = true;
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ SPDesktop *desktop = getDesktop();
Inkscape::Selection *selection = sp_desktop_selection (desktop);
const GSList *items = selection->itemList();
int selcount = g_slist_length((GSList *)items);
@@ -632,7 +632,7 @@ TileDialog::TileDialog()
//##Set up the panel
- SPDesktop *desktop = SP_ACTIVE_DESKTOP;
+ SPDesktop *desktop = getDesktop();
Inkscape::Selection *selection = sp_desktop_selection (desktop);
int selcount = 1;