diff options
| author | gustav_b <gustav_b@users.sourceforge.net> | 2007-12-07 01:41:04 +0000 |
|---|---|---|
| committer | gustav_b <gustav_b@users.sourceforge.net> | 2007-12-07 01:41:04 +0000 |
| commit | 1d22b74180777745a27e7ddbd3006c950063cf41 (patch) | |
| tree | df270c16e2856da62210ce610e3da52c45fe6c0d /src/dialogs | |
| parent | Fized crashes & odd behaviour when resizing, zooming and rotating feTurbulence (diff) | |
| download | inkscape-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.cpp | 13 | ||||
| -rw-r--r-- | src/dialogs/extensions.h | 6 | ||||
| -rw-r--r-- | src/dialogs/iconpreview.cpp | 12 | ||||
| -rw-r--r-- | src/dialogs/iconpreview.h | 2 | ||||
| -rw-r--r-- | src/dialogs/layers-panel.cpp | 16 | ||||
| -rw-r--r-- | src/dialogs/layers-panel.h | 2 | ||||
| -rw-r--r-- | src/dialogs/swatches.cpp | 8 | ||||
| -rw-r--r-- | src/dialogs/tiledialog.cpp | 10 |
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; |
