summaryrefslogtreecommitdiff
path: root/gtk2_ardour/theme_manager.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-12-07 13:44:12 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2014-12-07 13:44:12 -0500
commitb37be190f322cb27e28c3819a9c5e37b55a6fea3 (patch)
tree94cdd5e2a7c26c6e0e7f80ddb5650a91d19c3668 /gtk2_ardour/theme_manager.cc
parentd7ca81cced76dbb5ff78654c3146b1ab8d8a43c6 (diff)
fix up a logic problem when editing palette colors
Diffstat (limited to 'gtk2_ardour/theme_manager.cc')
-rw-r--r--gtk2_ardour/theme_manager.cc31
1 files changed, 14 insertions, 17 deletions
diff --git a/gtk2_ardour/theme_manager.cc b/gtk2_ardour/theme_manager.cc
index b87a916d7b..a241637a9b 100644
--- a/gtk2_ardour/theme_manager.cc
+++ b/gtk2_ardour/theme_manager.cc
@@ -693,8 +693,6 @@ ThemeManager::alias_palette_event (GdkEvent* ev, string new_alias, string target
void
ThemeManager::alias_palette_response (int response, std::string target_name, std::string old_alias)
{
- palette_response_connection.disconnect ();
-
switch (response) {
case GTK_RESPONSE_OK:
case GTK_RESPONSE_ACCEPT:
@@ -721,23 +719,22 @@ ThemeManager::choose_color_from_palette (string const & name)
return;
}
- if (!palette_window) {
- palette_window = new ArdourDialog (_("Color Palette"));
- palette_window->add_button (Stock::CANCEL, RESPONSE_CANCEL);
- palette_window->add_button (Stock::OK, RESPONSE_OK);
-
- ArdourCanvas::GtkCanvas* canvas = new ArdourCanvas::GtkCanvas ();
- ArdourCanvas::Container* group = initialize_palette_canvas (*canvas);
-
- canvas->signal_size_request().connect (sigc::mem_fun (*this, &ThemeManager::palette_size_request));
- canvas->signal_size_allocate().connect (sigc::bind (sigc::mem_fun (*this, &ThemeManager::palette_canvas_allocated), group, canvas,
- sigc::bind (sigc::mem_fun (*this, &ThemeManager::alias_palette_event), name)));
+ delete palette_window;
- palette_window->get_vbox()->pack_start (*canvas);
- palette_window->show_all ();
- }
+ palette_window = new ArdourDialog (_("Color Palette"));
+ palette_window->add_button (Stock::CANCEL, RESPONSE_CANCEL);
+ palette_window->add_button (Stock::OK, RESPONSE_OK);
+
+ ArdourCanvas::GtkCanvas* canvas = new ArdourCanvas::GtkCanvas ();
+ ArdourCanvas::Container* group = initialize_palette_canvas (*canvas);
+
+ canvas->signal_size_request().connect (sigc::mem_fun (*this, &ThemeManager::palette_size_request));
+ canvas->signal_size_allocate().connect (sigc::bind (sigc::mem_fun (*this, &ThemeManager::palette_canvas_allocated), group, canvas,
+ sigc::bind (sigc::mem_fun (*this, &ThemeManager::alias_palette_event), name)));
+
+ palette_window->get_vbox()->pack_start (*canvas);
+ palette_window->show_all ();
- palette_response_connection.disconnect ();
palette_response_connection = palette_window->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &ThemeManager::alias_palette_response), name, i->second));
palette_window->set_position (WIN_POS_MOUSE);