initial sort-of-mostly-working integration of new Pane
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 26 May 2016 14:46:28 +0000 (10:46 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 31 May 2016 19:30:45 +0000 (15:30 -0400)
gtk2_ardour/editor.cc
gtk2_ardour/editor.h
gtk2_ardour/location_ui.cc
gtk2_ardour/location_ui.h
gtk2_ardour/luawindow.cc
gtk2_ardour/mixer_ui.cc
gtk2_ardour/mixer_ui.h
gtk2_ardour/route_params_ui.cc
gtk2_ardour/route_params_ui.h
gtk2_ardour/utils.h

index 5826ba0b7f3e6479103d87ed590304849b67f4ff..d4f635b4b4c8d7b48edd19f52d25b89f1f574cd2 100644 (file)
@@ -234,30 +234,6 @@ static const gchar *_rb_opt_strings[] = {
 
 #define COMBO_TRIANGLE_WIDTH 25 // ArdourButton _diameter (11) + 2 * arrow-padding (2*2) + 2 * text-padding (2*5)
 
-static void
-pane_size_watcher (Paned* pane)
-{
-       /* if the handle of a pane vanishes into (at least) the tabs of a notebook,
-          it is:
-
-             X: hard to access
-             Quartz: impossible to access
-
-          so stop that by preventing it from ever getting too narrow. 35
-          pixels is basically a rough guess at the tab width.
-
-          ugh.
-       */
-
-       int max_width_of_lhs = GTK_WIDGET(pane->gobj())->allocation.width - 35;
-
-       gint pos = pane->get_position ();
-
-       if (pos > max_width_of_lhs) {
-               pane->set_position (max_width_of_lhs);
-       }
-}
-
 Editor::Editor ()
        : PublicEditor (global_hpacker)
        , editor_mixer_strip_width (Wide)
@@ -685,7 +661,17 @@ Editor::Editor ()
 
        _notebook_shrunk = false;
 
-       editor_summary_pane.pack1(edit_packer);
+
+       /* Pick up some settings we need to cache, early */
+
+       XMLNode* settings = ARDOUR_UI::instance()->editor_settings();
+       XMLProperty* prop;
+
+       if (settings && (prop = settings->property ("notebook-shrunk"))) {
+               _notebook_shrunk = string_is_affirmative (prop->value ());
+       }
+
+       editor_summary_pane.add (edit_packer);
 
        Button* summary_arrows_left_left = manage (new Button);
        summary_arrows_left_left->add (*manage (new Arrow (ARROW_LEFT, SHADOW_NONE)));
@@ -726,22 +712,29 @@ Editor::Editor ()
        _summary_hbox.pack_start (*summary_arrows_right, false, false);
 
        if (!ARDOUR::Profile->get_trx()) {
-               editor_summary_pane.pack2 (_summary_hbox);
+               editor_summary_pane.add (_summary_hbox);
        }
 
-       edit_pane.pack1 (editor_summary_pane, true, true);
+       edit_pane.add (editor_summary_pane);
        if (!ARDOUR::Profile->get_trx()) {
-               edit_pane.pack2 (_the_notebook, false, true);
+               edit_pane.add (_the_notebook);
        }
 
-       editor_summary_pane.signal_size_allocate().connect (sigc::bind (sigc::mem_fun (*this, &Editor::pane_allocation_handler), static_cast<Paned*> (&editor_summary_pane)));
 
-       /* XXX: editor_summary_pane might need similar to the edit_pane */
+       if (!settings || (prop = settings->property ("edit-horizontal-pane-pos")) == 0) {
+               /* initial allocation is 90% to canvas, 10% to notebook */
+               edit_pane.set_divider (0, 0.90);
+       } else {
+               edit_pane.set_divider (0, atof (prop->value()));
+       }
 
-       edit_pane.signal_size_allocate().connect (sigc::bind (sigc::mem_fun(*this, &Editor::pane_allocation_handler), static_cast<Paned*> (&edit_pane)));
+       if (!settings || (prop = settings->property ("edit-vertical-pane-pos")) == 0) {
+               /* initial allocation is 90% to canvas, 10% to summary */
+               editor_summary_pane.set_divider (0, 0.90);
+       } else {
 
-       Glib::PropertyProxy<int> proxy = edit_pane.property_position();
-       proxy.signal_changed().connect (bind (sigc::ptr_fun (pane_size_watcher), static_cast<Paned*> (&edit_pane)));
+               editor_summary_pane.set_divider (0, atof (prop->value()));
+       }
 
        top_hbox.pack_start (toolbar_frame);
 
@@ -2587,10 +2580,10 @@ Editor::get_state ()
 
        node->add_child_nocopy (Tabbable::get_state());
 
-       snprintf(buf,sizeof(buf), "%f", paned_position_as_fraction (edit_pane, false));
+       snprintf(buf,sizeof(buf), "%f", edit_pane.get_divider ());
        node->add_property("edit-horizontal-pane-pos", string(buf));
        node->add_property("notebook-shrunk", _notebook_shrunk ? "1" : "0");
-       snprintf(buf,sizeof(buf), "%f", paned_position_as_fraction (editor_summary_pane, true));
+       snprintf(buf,sizeof(buf), "%f", editor_summary_pane.get_divider());
        node->add_property("edit-vertical-pane-pos", string(buf));
 
        maybe_add_mixer_strip_width (*node);
@@ -3929,85 +3922,6 @@ Editor::cycle_zoom_focus ()
        }
 }
 
-void
-Editor::pane_allocation_handler (Allocation &alloc, Paned* which)
-{
-       /* recover or initialize pane positions. do this here rather than earlier because
-          we don't want the positions to change the child allocations, which they seem to do.
-
-          See comments in mixer_ui.cc about how this works.
-        */
-
-       float pos;
-       XMLProperty* prop;
-       XMLNode* geometry = ARDOUR_UI::instance()->editor_settings();
-
-       enum Pane {
-               Horizontal = 0x1,
-               Vertical = 0x2
-       };
-
-       static Pane done;
-
-       if (which == static_cast<Paned*> (&edit_pane)) {
-
-               if (done & Horizontal) {
-                       return;
-               }
-
-               if (geometry && (prop = geometry->property ("notebook-shrunk"))) {
-                       _notebook_shrunk = string_is_affirmative (prop->value ());
-               }
-
-               if (!geometry || (prop = geometry->property ("edit-horizontal-pane-pos")) == 0) {
-                       /* initial allocation is 90% to canvas, 10% to notebook */
-                       pos = (int) floor (alloc.get_width() * 0.90f);
-               } else {
-                       pos = atof (prop->value());
-               }
-
-               if (pos > 1.0f) {
-                       /* older versions of Ardour stored absolute position */
-                       if (alloc.get_width() > pos) {
-                               edit_pane.set_position (pos);
-                               done = (Pane) (done | Horizontal);
-                       }
-               } else {
-                       if (alloc.get_width() > 1.0/pos) {
-                               paned_set_position_as_fraction (edit_pane, pos, false);
-                               done = (Pane) (done | Horizontal);
-                       }
-               }
-
-       } else if (which == static_cast<Paned*> (&editor_summary_pane)) {
-
-               if (done & Vertical) {
-                       return;
-               }
-
-               if (!geometry || (prop = geometry->property ("edit-vertical-pane-pos")) == 0) {
-                       /* initial allocation is 90% to canvas, 10% to summary */
-                       pos = (int) floor (alloc.get_height() * 0.90f);
-               } else {
-
-                       pos = atof (prop->value());
-               }
-
-               if (pos > 1.0f) {
-                       /* older versions of Ardour stored absolute position */
-                       if (alloc.get_height() > pos) {
-                               editor_summary_pane.set_position (pos);
-                               done = (Pane) (done | Vertical);
-                       }
-               } else {
-                       if (alloc.get_height() > 1.0/pos) {
-                               paned_set_position_as_fraction (editor_summary_pane, pos, true);
-                               done = (Pane) (done | Vertical);
-                       }
-               }
-       }
-}
-
 void
 Editor::set_show_measures (bool yn)
 {
@@ -5950,16 +5864,16 @@ Editor::notebook_tab_clicked (GdkEventButton* ev, Gtk::Widget* page)
 
                if (_notebook_shrunk) {
                        if (pre_notebook_shrink_pane_width) {
-                               edit_pane.set_position (*pre_notebook_shrink_pane_width);
+                               edit_pane.set_divider (0, *pre_notebook_shrink_pane_width);
                        }
                        _notebook_shrunk = false;
                } else {
-                       pre_notebook_shrink_pane_width = edit_pane.get_position();
+                       pre_notebook_shrink_pane_width = edit_pane.get_divider();
 
                        /* this expands the LHS of the edit pane to cover the notebook
                           PAGE but leaves the tabs visible.
                         */
-                       edit_pane.set_position (edit_pane.get_position() + page->get_width());
+                       edit_pane.set_divider (0, edit_pane.get_divider() + page->get_width());
                        _notebook_shrunk = true;
                }
        }
index 0e651b5dad6fc22018956dc2695f33f158590295..cebad023f99c4d7c1512fc0c04266dd907aa811f 100644 (file)
 #include <gtkmm/comboboxtext.h>
 #include <gtkmm/layout.h>
 
-#include "gtkmm2ext/selector.h"
+#include "gtkmm2ext/bindings.h"
 #include "gtkmm2ext/click_box.h"
 #include "gtkmm2ext/dndtreeview.h"
+#include "gtkmm2ext/pane.h"
+#include "gtkmm2ext/selector.h"
 #include "gtkmm2ext/stateful_button.h"
-#include "gtkmm2ext/bindings.h"
 
 #include "pbd/stateful.h"
 #include "pbd/signals.h"
@@ -610,17 +611,15 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
 
        void update_join_object_range_location (double);
 
-       boost::optional<int>  pre_notebook_shrink_pane_width;
-
-       void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*);
+       boost::optional<float>  pre_notebook_shrink_pane_width;
 
        Gtk::Notebook _the_notebook;
        bool _notebook_shrunk;
        void add_notebook_page (std::string const &, Gtk::Widget &);
        bool notebook_tab_clicked (GdkEventButton *, Gtk::Widget *);
 
-       Gtk::HPaned   edit_pane;
-       Gtk::VPaned   editor_summary_pane;
+       Gtkmm2ext::HPane   edit_pane;
+       Gtkmm2ext::VPane   editor_summary_pane;
 
        Gtk::EventBox meter_base;
        Gtk::HBox     meter_box;
index 07ed9c41d8460bf31279ca339839fbb968e2a73f..ba2ef5792d5fad99f5ab48797beb602a2fc6563c 100644 (file)
@@ -803,7 +803,7 @@ LocationUI::LocationUI ()
        table->attach (loc_frame_box, 0, 2, table_row, table_row + 1);
        ++table_row;
 
-       loc_range_panes.pack1 (*table, true, false);
+       loc_range_panes.add (*table);
 
        table = manage (new Table (3, 2));
        table->set_spacings (2);
@@ -835,7 +835,7 @@ LocationUI::LocationUI ()
        table->attach (range_frame_box, 0, 2, table_row, table_row + 1);
        ++table_row;
 
-       loc_range_panes.pack2 (*table, true, false);
+       loc_range_panes.add (*table);
 
        HBox* add_button_box = manage (new HBox);
        add_button_box->pack_start (add_location_button, true, true);
index 6d27d40c133f6c22dbc2b6282b4d51e40e5ec61b..cdbc952e6c11821cbf6bacb727d0a112b3367363 100644 (file)
@@ -26,7 +26,6 @@
 #include <gtkmm/table.h>
 #include <gtkmm/entry.h>
 #include <gtkmm/label.h>
-#include <gtkmm/paned.h>
 #include <gtkmm/scrolledwindow.h>
 
 #include "pbd/signals.h"
@@ -34,6 +33,8 @@
 #include "ardour/location.h"
 #include "ardour/session_handle.h"
 
+#include <gtkmm2ext/pane.h>
+
 #include "ardour_button.h"
 #include "ardour_window.h"
 #include "audio_clock.h"
@@ -178,7 +179,7 @@ class LocationUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
        LocationEditRow      punch_edit_row;
        Gtk::VBox loop_punch_box;
 
-       Gtk::VPaned loc_range_panes;
+       Gtkmm2ext::VPane loc_range_panes;
 
        Gtk::VBox  loc_frame_box;
        Gtk::Button add_location_button;
index 8ed94c2cb2978ec9c9c54a26c5c4753f26eee492..79220dff24c8aa4baf6781d11adb219217ea3183 100644 (file)
@@ -34,6 +34,7 @@
 #include "pbd/md5.h"
 
 #include "gtkmm2ext/gtk_ui.h"
+#include "gtkmm2ext/pane.h"
 #include "gtkmm2ext/utils.h"
 #include "gtkmm2ext/window_title.h"
 
@@ -155,9 +156,9 @@ LuaWindow::LuaWindow ()
        vbox->pack_start (*scrollin, true, true, 0);
        vbox->pack_start (*hbox, false, false, 2);
 
-       Gtk::VPaned *vpane = manage (new Gtk::VPaned ());
-       vpane->pack1 (*vbox, true, false);
-       vpane->pack2 (scrollout, false, true);
+       Gtkmm2ext::VPane *vpane = manage (new Gtkmm2ext::VPane ());
+       vpane->add (*vbox);
+       vpane->add (scrollout);
 
        vpane->show_all ();
        add (*vpane);
index a3838707ce56d7dbf55ffa43f3ec8f19fbd4b105..b52424ec927a7c5ddfe84995fe2d7b0035797004 100644 (file)
@@ -236,10 +236,10 @@ Mixer_UI::Mixer_UI ()
        favorite_plugins_frame.set_shadow_type (Gtk::SHADOW_IN);
        favorite_plugins_frame.add (favorite_plugins_scroller);
 
-       rhs_pane1.pack1 (favorite_plugins_frame, false, true);
-       rhs_pane1.pack2 (track_display_frame);
-       rhs_pane2.pack1 (rhs_pane1);
-       rhs_pane2.pack2 (group_display_frame);
+       rhs_pane1.add (favorite_plugins_frame);
+       rhs_pane1.add (track_display_frame);
+       rhs_pane2.add (rhs_pane1);
+       rhs_pane2.add (group_display_frame);
 
        list_vpacker.pack_start (rhs_pane2, true, true);
 
@@ -252,23 +252,14 @@ Mixer_UI::Mixer_UI ()
        vca_scroller.set_policy (Gtk::POLICY_ALWAYS, Gtk::POLICY_AUTOMATIC);
        vca_scroller.signal_button_release_event().connect (sigc::mem_fun(*this, &Mixer_UI::strip_scroller_button_release));
 
-       inner_pane.pack1 (scroller);
-       inner_pane.pack2 (vca_scroller);
+       inner_pane.add (scroller);
+       inner_pane.add (vca_scroller);
 
        global_hpacker.pack_start (inner_pane, true, true);
        global_hpacker.pack_start (out_packer, false, false);
 
-       list_hpane.pack1(list_vpacker, false, true);
-       list_hpane.pack2(global_hpacker, true, false);
-
-       rhs_pane1.signal_size_allocate().connect (sigc::bind (sigc::mem_fun(*this, &Mixer_UI::pane_allocation_handler),
-                                                       static_cast<Gtk::Paned*> (&rhs_pane1)));
-       rhs_pane2.signal_size_allocate().connect (sigc::bind (sigc::mem_fun(*this, &Mixer_UI::pane_allocation_handler),
-                                                       static_cast<Gtk::Paned*> (&rhs_pane2)));
-       list_hpane.signal_size_allocate().connect (sigc::bind (sigc::mem_fun(*this, &Mixer_UI::pane_allocation_handler),
-                                                        static_cast<Gtk::Paned*> (&list_hpane)));
-       inner_pane.signal_size_allocate().connect (sigc::bind (sigc::mem_fun(*this, &Mixer_UI::pane_allocation_handler),
-                                                        static_cast<Gtk::Paned*> (&inner_pane)));
+       list_hpane.add (list_vpacker);
+       list_hpane.add (global_hpacker);
 
        _content.pack_start (list_hpane, true, true);
 
@@ -1628,10 +1619,11 @@ Mixer_UI::show_mixer_list (bool yn)
                list_vpacker.show ();
 
                //if user wants to show the pane, we should make sure that it is wide enough to be visible
-               int width = list_hpane.get_position();
-               if (width < 40) {
-                       list_hpane.set_position(40);
-               }
+               /// XXX PANE
+               // float width = list_hpane.get_position();
+               //if (width < 40) {
+               // list_hpane.set_position(40);
+               //}
        } else {
                list_vpacker.hide ();
        }
@@ -1910,13 +1902,13 @@ Mixer_UI::get_state ()
 
        node->add_child_nocopy (Tabbable::get_state());
 
-       snprintf(buf,sizeof(buf), "%f", paned_position_as_fraction (rhs_pane1, true));
+       snprintf(buf,sizeof(buf), "%f", rhs_pane1.get_divider());
        node->add_property(X_("mixer-rhs-pane1-pos"), string(buf));
-       snprintf(buf,sizeof(buf), "%f", paned_position_as_fraction (rhs_pane2, true));
+       snprintf(buf,sizeof(buf), "%f", rhs_pane2.get_divider());
        node->add_property(X_("mixer-rhs_pane2-pos"), string(buf));
-       snprintf(buf,sizeof(buf), "%f", paned_position_as_fraction (list_hpane, false));
+       snprintf(buf,sizeof(buf), "%f", list_hpane.get_divider());
        node->add_property(X_("mixer-list-hpane-pos"), string(buf));
-       snprintf(buf,sizeof(buf), "%f", paned_position_as_fraction (inner_pane, false));
+       snprintf(buf,sizeof(buf), "%f", inner_pane.get_divider());
        node->add_property(X_("mixer-inner-pane-pos"), string(buf));
 
        node->add_property ("narrow-strips", _strip_width == Narrow ? "yes" : "no");
@@ -1941,149 +1933,6 @@ Mixer_UI::get_state ()
        return *node;
 }
 
-void
-Mixer_UI::pane_allocation_handler (Allocation& allocation, Gtk::Paned* which)
-{
-       float pos;
-       XMLProperty* prop = 0;
-       XMLNode* geometry = ARDOUR_UI::instance()->mixer_settings();
-       int height = default_height;
-       static bool done[4] = { false, false, false, false };
-
-       /* Gtk::Paned behaves very oddly and rather undesirably. Setting the
-        * position is a crapshoot if you time it incorrectly with the overall
-        * sizing of the Paned. For example, if you might retrieve the size with
-        * ::get_position() and then later call ::set_position() on a Paned at
-        * a time when its allocation is different than it was when you retrieved
-        * the position. The position will be interpreted as the size of the
-        * first (top or left) child widget. If packing/size allocation later
-        * resizes the Paned to a (final) smaller size, the position will be
-        * used in ways that mean that the Paned ends up NOT in the same state
-        * that it was in when you originally saved the position.
-        *
-        * Concrete example: Paned is 800 pixels wide, position is 400
-        * (halfway).  Save position as 400. During program restart, set
-        * position to 400, before Paned has been allocated any space. Paned
-        * ends up initially sized to 1200 pixels.  Position is now 1/3 of the
-        * way across/down.  Subsequent resizes will leave the position 1/3 of
-        * the way across, rather than leaving it as a fixed pixel
-        * position. Eventually, the Paned ends up 800 pixels wide/high again,
-        * but the position is now 267, not 400.
-        *
-        * So ...
-        *
-        * We deal with this by using two strategies:
-        *
-        * 1) only set the position if the allocated size of the Paned is at
-        * least as big as it needs to be for the position to make sense.
-        *
-        * 2) in recent versions of Ardour, save the position as a fraction,
-        * and restore it using that fraction.
-        *
-        * So, we will only call ::set_position() AFTER the Paned is of a
-        * sensible size, and then in addition, we will set the position in a
-        * way that will be maintained as/when/if the Paned is resized.
-        *
-        * Once we've called ::set_position() on a Paned, we don't do it
-        * again.
-        */
-
-       if (which == static_cast<Gtk::Paned*> (&rhs_pane1)) {
-
-               if (done[0]) {
-                       return;
-               }
-
-               if (!geometry || (prop = geometry->property("mixer-rhs-pane1-pos")) == 0) {
-                       pos = height / 3;
-               } else {
-                       pos = atof (prop->value());
-               }
-
-               if (pos > 1.0f) {
-                       /* older versions of Ardour stored absolute position */
-                       if ((done[0] = (allocation.get_height() > pos))) {
-                               rhs_pane1.set_position (pos);
-                       }
-               } else {
-                       if ((done[0] = (allocation.get_height() > 1.0/pos))) {
-                               paned_set_position_as_fraction (rhs_pane1, pos, true);
-                       }
-               }
-       }
-
-       if (which == static_cast<Gtk::Paned*> (&rhs_pane2)) {
-
-               if (done[1]) {
-                       return;
-               }
-
-               if (!geometry || (prop = geometry->property("mixer-rhs-pane2-pos")) == 0) {
-                       pos = 2 * height / 3;
-               } else {
-                       pos = atof (prop->value());
-               }
-
-               if (pos > 1.0f) {
-                       /* older versions of Ardour stored absolute position */
-                       if ((done[1] = (allocation.get_height() > pos))) {
-                               rhs_pane2.set_position (pos);
-                       }
-               } else {
-                       if ((done[1] = (allocation.get_height() > 1.0/pos))) {
-                               paned_set_position_as_fraction (rhs_pane2, pos, true);
-                       }
-               }
-       }
-
-       if (which == static_cast<Gtk::Paned*> (&list_hpane)) {
-
-               if (done[2]) {
-                       return;
-               }
-
-               if (!geometry || (prop = geometry->property("mixer-list-hpane-pos")) == 0) {
-                       pos = std::max ((float)100, rintf ((float) 125 * UIConfiguration::instance().get_ui_scale()));
-               } else {
-                       pos = max (0.1, atof (prop->value ()));
-               }
-
-               if (pos > 1.0f) {
-                       if ((done[2] = (allocation.get_width() > pos))) {
-                               list_hpane.set_position (pos);
-                       }
-               } else {
-                       if ((done[2] = (allocation.get_width() > 1.0/pos))) {
-                               paned_set_position_as_fraction (list_hpane, pos, false);
-                       }
-               }
-       }
-
-       if (which == static_cast<Gtk::Paned*> (&inner_pane)) {
-
-               if (done[3]) {
-                       return;
-               }
-
-               if (!geometry || (prop = geometry->property("mixer-inner-pane-pos")) == 0) {
-                       pos = std::max ((float)100, rintf ((float) 125 * UIConfiguration::instance().get_ui_scale()));
-               } else {
-                       pos = max (0.1, atof (prop->value ()));
-               }
-
-               if (pos > 1.0f) {
-                       /* older versions of Ardour stored absolute position */
-                       if ((done[3] = (allocation.get_width() > pos))) {
-                               inner_pane.set_position (pos);
-                       }
-               } else {
-                       if ((done[3] = (allocation.get_width() > 1.0/pos))) {
-                               paned_set_position_as_fraction (inner_pane, pos, false);
-                       }
-               }
-       }
-}
-
 void
 Mixer_UI::scroll_left ()
 {
index ecb7b01912f529cd6e19acb6da49eeb149356d0a..9008b6611194d67bcb706dcd52d95d2f58e25fa4 100644 (file)
@@ -28,7 +28,6 @@
 #include <gtkmm/label.h>
 #include <gtkmm/button.h>
 #include <gtkmm/frame.h>
-#include <gtkmm/paned.h>
 #include <gtkmm/menu.h>
 #include <gtkmm/treeview.h>
 #include <gtkmm/liststore.h>
@@ -42,8 +41,8 @@
 #include "ardour/plugin.h"
 #include "ardour/plugin_manager.h"
 
-
 #include "gtkmm2ext/dndtreeview.h"
+#include <gtkmm2ext/pane.h>
 #include "gtkmm2ext/treeutils.h"
 
 #include "gtkmm2ext/tabbable.h"
@@ -143,22 +142,20 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p
        Gtk::Frame            track_display_frame;
        Gtk::Frame            group_display_frame;
        Gtk::Frame            favorite_plugins_frame;
-       Gtk::VPaned           rhs_pane1;
-       Gtk::VPaned           rhs_pane2;
-       Gtk::HPaned           inner_pane;
+       Gtkmm2ext::VPane      rhs_pane1;
+       Gtkmm2ext::VPane      rhs_pane2;
+       Gtkmm2ext::HPane      inner_pane;
        Gtk::HBox             strip_packer;
        Gtk::ScrolledWindow   vca_scroller;
        Gtk::HBox             vca_packer;
        Gtk::EventBox         vca_scroller_base;
        Gtk::HBox             out_packer;
-       Gtk::HPaned           list_hpane;
+       Gtkmm2ext::HPane      list_hpane;
 
        MixerGroupTabs* _group_tabs;
 
        bool on_scroll_event (GdkEventScroll*);
 
-       void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*);
-
        std::list<MixerStrip *> strips;
 
        void scroller_drag_data_received (const Glib::RefPtr<Gdk::DragContext>&, int, int, const Gtk::SelectionData&, guint, guint);
index 16595b25a2635a4fbdd6c53336902626a376f121..9ea7599bf6eb57ce118a4506c90d21ebede66146 100644 (file)
@@ -125,12 +125,14 @@ RouteParams_UI::RouteParams_UI ()
        route_vpacker.pack_start (route_hpacker, true, true);
 
 
-       list_hpane.pack1 (list_vpacker);
-       list_hpane.add2 (route_vpacker);
+       list_hpane.add (list_vpacker);
+       list_hpane.add (route_vpacker);
 
-       list_hpane.set_position(110);
+       /// XXX PANE
+       //list_hpane.set_position(110);
 
-       redir_hpane.set_position(110);
+       /// XXX PANE
+       //redir_hpane.set_position(110);
 
        //global_vpacker.pack_start (list_hpane, true, true);
        //get_vbox()->pack_start (global_vpacker);
@@ -250,7 +252,7 @@ RouteParams_UI::setup_processor_boxes()
                if (at) {
                        at->FreezeChange.connect (route_connections, invalidator (*this), boost::bind (&RouteParams_UI::map_frozen, this), gui_context());
                }
-               redir_hpane.pack1 (*insert_box);
+               redir_hpane.add (*insert_box);
 
                insert_box->ProcessorSelected.connect (sigc::mem_fun(*this, &RouteParams_UI::redirect_selected));  //note:  this indicates a double-click activation, not just a "selection"
                insert_box->ProcessorUnselected.connect (sigc::mem_fun(*this, &RouteParams_UI::redirect_selected));
@@ -546,7 +548,7 @@ RouteParams_UI::redirect_selected (boost::shared_ptr<ARDOUR::Processor> proc)
                send->DropReferences.connect (_processor_going_away_connection, invalidator (*this), boost::bind (&RouteParams_UI::processor_going_away, this, boost::weak_ptr<Processor>(proc)), gui_context());
                _active_view = send_ui;
 
-               redir_hpane.add2 (*_active_view);
+               redir_hpane.add (*_active_view);
                redir_hpane.show_all();
 
        } else if ((retrn = boost::dynamic_pointer_cast<Return> (proc)) != 0) {
@@ -557,7 +559,7 @@ RouteParams_UI::redirect_selected (boost::shared_ptr<ARDOUR::Processor> proc)
                retrn->DropReferences.connect (_processor_going_away_connection, invalidator (*this), boost::bind (&RouteParams_UI::processor_going_away, this, boost::weak_ptr<Processor>(proc)), gui_context());
                _active_view = return_ui;
 
-               redir_hpane.add2 (*_active_view);
+               redir_hpane.add (*_active_view);
                redir_hpane.show_all();
 
        } else if ((plugin_insert = boost::dynamic_pointer_cast<PluginInsert> (proc)) != 0) {
@@ -569,7 +571,7 @@ RouteParams_UI::redirect_selected (boost::shared_ptr<ARDOUR::Processor> proc)
                plugin_ui->start_updating (0);
                _active_view = plugin_ui;
 
-               redir_hpane.pack2 (*_active_view);
+               redir_hpane.add (*_active_view);
                redir_hpane.show_all();
 
        } else if ((port_insert = boost::dynamic_pointer_cast<PortInsert> (proc)) != 0) {
@@ -580,7 +582,7 @@ RouteParams_UI::redirect_selected (boost::shared_ptr<ARDOUR::Processor> proc)
                port_insert->DropReferences.connect (_processor_going_away_connection, invalidator (*this), boost::bind (&RouteParams_UI::processor_going_away, this, boost::weak_ptr<Processor> (proc)), gui_context());
                _active_view = portinsert_ui;
 
-               redir_hpane.pack2 (*_active_view);
+               redir_hpane.add (*_active_view);
                portinsert_ui->redisplay();
                redir_hpane.show_all();
        }
index 65bef26b5254a2c2aaea49dc41f18f7cdc4a5ac6..ccdbf6c441760dc1bd3d1025b0c5923a6178502c 100644 (file)
@@ -27,7 +27,6 @@
 #include <gtkmm/eventbox.h>
 #include <gtkmm/frame.h>
 #include <gtkmm/label.h>
-#include <gtkmm/paned.h>
 #include <gtkmm/scrolledwindow.h>
 #include <gtkmm/togglebutton.h>
 #include <gtkmm/treeview.h>
@@ -37,6 +36,8 @@
 
 #include "ardour/ardour.h"
 
+#include <gtkmm2ext/pane.h>
+
 #include "ardour_window.h"
 #include "processor_box.h"
 #include "route_processor_selection.h"
@@ -81,7 +82,7 @@ class RouteParams_UI : public ArdourWindow, public PBD::ScopedConnectionList
        Gtk::Notebook            notebook;
        Gtk::Frame               input_frame;
        Gtk::Frame               output_frame;
-       Gtk::HPaned              redir_hpane;
+       Gtkmm2ext::HPane         redir_hpane;
 
        Gtk::Frame               route_select_frame;
 
@@ -90,9 +91,9 @@ class RouteParams_UI : public ArdourWindow, public PBD::ScopedConnectionList
 
        ProcessorBox*            insert_box;
 
-       Gtk::HPaned              list_hpane;
+       Gtkmm2ext::HPane         list_hpane;
 
-       Gtk::HPaned              right_hpane;
+       Gtkmm2ext::HPane         right_hpane;
 
        Gtk::Frame               route_choice_frame;
 
index 5415bb84209a469ab843f055cd1aaff379055ea0..1793631326fc4d651e0b82ff21a13226fa0046c2 100644 (file)
@@ -39,7 +39,6 @@ namespace PBD {
 namespace Gtk {
        class Window;
        class ComboBoxText;
-       class Paned;
         class Adjustment;
 }