@@ -111,7 +111,8 @@ Channels Options::shadowChannels() const
111111 &ch2 = shadow.at (ChannelId::noop);
112112 auto &&stacker : shadow.getDimensions ({data (stackChannels),
113113 std::size_t {1 } + secondary.has_value ()})) {
114- ch1.removeSeries (stacker);
114+ if (stackChannelType () != subAxisType () || !isSplit ())
115+ ch1.removeSeries (stacker);
115116 ch2.removeSeries (stacker);
116117 }
117118
@@ -122,7 +123,7 @@ void Options::drilldownTo(const Options &other)
122123{
123124 auto &stackChannel = this ->stackChannel ();
124125
125- if (this -> split && ! isSplit ()) this ->split = {};
126+ if (! isSplit () || !other. isSplit ()) this ->split = {};
126127
127128 for (auto &&dim : other.getChannels ().getDimensions ())
128129 if (!getChannels ().isSeriesUsed (dim))
@@ -134,12 +135,14 @@ void Options::intersection(const Options &other)
134135 for (auto &&dim : getChannels ().getDimensions ())
135136 if (!other.getChannels ().isSeriesUsed (dim))
136137 getChannels ().removeSeries (dim);
138+
139+ split = {};
137140}
138141
139142bool Options::looksTheSame (const Options &other) const
140143{
141144 if (channels.anyAxisSet ()
142- && channels.at (Gen:: ChannelId::label).isEmpty ()) {
145+ && channels.at (ChannelId::label).isEmpty ()) {
143146 auto thisCopy = *this ;
144147 thisCopy.simplify ();
145148
@@ -154,6 +157,8 @@ bool Options::looksTheSame(const Options &other) const
154157
155158void Options::simplify ()
156159{
160+ if (isSplit ()) return ;
161+
157162 // remove all dimensions, only used at the end of stack
158163 auto &stackChannel = this ->stackChannel ();
159164
0 commit comments