Hello community, here is the log from the commit of package yast2 for openSUSE:Leap:15.2 checked in at 2020-03-31 07:22:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Leap:15.2/yast2 (Old) and /work/SRC/openSUSE:Leap:15.2/.yast2.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2" Tue Mar 31 07:22:58 2020 rev:178 rq:789309 version:4.2.78 Changes: -------- --- /work/SRC/openSUSE:Leap:15.2/yast2/yast2.changes 2020-03-26 05:41:03.587268858 +0100 +++ /work/SRC/openSUSE:Leap:15.2/.yast2.new.3160/yast2.changes 2020-03-31 07:22:59.226414102 +0200 @@ -1,0 +2,14 @@ +Thu Mar 26 12:57:33 UTC 2020 - David Diaz <dgonza...@suse.com> + +- Remove no longer needed multi status selector since it + does not work as expected (bsc#1167523). +- 4.2.78 + +------------------------------------------------------------------- +Tue Mar 24 16:40:09 UTC 2020 - Ladislav Slezák <lsle...@suse.cz> + +- Fixed alignment in the multi selection CWM widget + (part of bsc#1167523) +- 4.2.77 + +------------------------------------------------------------------- Old: ---- yast2-4.2.76.tar.bz2 New: ---- yast2-4.2.78.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2.spec ++++++ --- /var/tmp/diff_new_pack.13Tpks/_old 2020-03-31 07:22:59.602414265 +0200 +++ /var/tmp/diff_new_pack.13Tpks/_new 2020-03-31 07:22:59.606414267 +0200 @@ -17,7 +17,7 @@ Name: yast2 -Version: 4.2.76 +Version: 4.2.78 Release: 0 Summary: YaST2 Main Package License: GPL-2.0-only ++++++ yast2-4.2.76.tar.bz2 -> yast2-4.2.78.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.76/library/cwm/src/lib/cwm/multi_status_selector.rb new/yast2-4.2.78/library/cwm/src/lib/cwm/multi_status_selector.rb --- old/yast2-4.2.76/library/cwm/src/lib/cwm/multi_status_selector.rb 2020-03-23 14:55:14.000000000 +0100 +++ new/yast2-4.2.78/library/cwm/src/lib/cwm/multi_status_selector.rb 1970-01-01 01:00:00.000000000 +0100 @@ -1,481 +0,0 @@ -# Copyright (c) [2020] SUSE LLC -# -# All Rights Reserved. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of version 2 of the GNU General Public License as published -# by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, contact SUSE LLC. -# -# To contact SUSE LLC about this file by physical or electronic mail, you may -# find current contact information at www.suse.com. - -require "cwm" -require "abstract_method" - -module CWM - # Custom widget to manage multi status selection items - # - # It uses a RichText to emulate the multi selection list meeting following requirements: - # - # - Allow to select more than one item. - # - Able to represent multiple statuses: no selected, selected, auto selected. - # - Items can be enable or disabled. - # - Emit different events to distinguish the interaction through check box input or its label. - # - Automatic text wrapping. - # - Keep the vertical scroll. - # - # If you want to see it in action, have a look at yast2-registration or yast2-packager modules. - # - # TODO: make possible to use it more than once in the same dialog, maybe by using the parent - # widget_id as a prefix for the event_id. See {CWM::MultiStatusSelector#handle} and - # {CWM::MultiStatusSelector::Item.event_id}. - # - # @example Defining a MultiStatusSelector to manage products selection (with dependencies) - # - # require "cwm/multi_status_selector" - # - # class MyMultiStatusSelector < CWM::MultiStatusSelector - # attr_reader :items - # - # def initialize(products) - # @products = products - # @items = products.map { |p| Item.new(p) } - # end - # - # def contents - # VBox( - # VWeight(60, super), - # VWeight(40, details) - # ) - # end - # - # def toggle(item) - # item.toggle - # select_dependencies - # label_event_handler(item) - # end - # - # private - # - # attr_accessor :products - # - # def details - # @details ||= CWM::RichText.new - # end - # - # def select_dependencies - # # logic to recalculate auto selected items - # end - # - # def label_event_handler(item) - # details.value = item.description - # end - # - # class Item < CWM::MultiStateSelector::Item - # attr_reader :status, :dependencies - # - # def initialize(product) - # @product = product - # @status = product.status || UNSELECTED - # @dependencies = product.dependencies || [] - # end - # - # def id - # product.id - # end - # - # def label - # product.friendly_name || product.name - # end - # - # def description - # # build the item description - # end - # - # private - # - # attr_reader :product - # end - # end - class MultiStatusSelector < CustomWidget - # @!method items - # The items collection - # @return [Array<Item>] the collection of available items - abstract_method :items - - # @macro seeAbstractWidget - def init - refresh - end - - # @macro seeAbstractWidget - def contents - HBox(content) - end - - # Updates the content based on items list - def refresh - new_value = items.map do |item| - item_content = item.to_richtext - - if Yast::UI.TextMode - "#{item_content}<br>" - else - "<p>#{item_content}</p>" - end - end - - content.value = new_value.join - end - - # @macro seeAbstractWidget - def handle(event) - if event["ID"].to_s.include?(Item.event_id) - id, fired_by = event["ID"].split(Item.event_id) - - item = find_item(id) - send("#{fired_by}_event_handler", item) - end - - nil - end - - # Toggles the status of given item - # - # Redefine it if needed to perform additional actions before or after toggling the item, like - # calculating dependencies for auto selection. - # - # @param item [Item] item to toggle the status - def toggle(item) - item.toggle - end - - private - - # @macro seeAbstractWidget - def handle_all_events - true - end - - # Handles the event fired by the Item check box input - # - # @param item [Item] the item that fired the event - def input_event_handler(item) - toggle(item) - refresh - end - - # Handles the event fired by the Item check box label - # - # @param [Item] the item that fired the event - def label_event_handler(item) - log.debug("Unhandled label event fired by #{item.inspect}") - end - - # Returns the item with given id - # - # @param needle [#to_s] any object that responds to `#to_s` - # @return [Item, nil] the item which id matches with given object#to_s - def find_item(needle) - items.find { |i| i.id.to_s == needle.to_s } - end - - # Convenience widget to keep the content updated - # - # @return [ContentArea] - def content - @content ||= Content.new - end - - # A CWM::RichText able to keep the vertical scroll after updating its value - class Content < RichText - # @macro seeAbstractWidget - def opt - [:notify] - end - - # @macro seeRichText - def keep_scroll? - true - end - end - - # A plain Ruby object in charge to build an item "check box" representation - # - # It already provides a default state (always enabled) and the logic to deal with the status - # (selected, unselected or auto selected) but it can be extended by redefining the #status, - # #toggle, and/or #enabled? methods. - # - # Derived classes must define #id and #label attributes/methods. - # - # See the {MultiStatusSelector} example. - class Item - extend Yast::I18n - - textdomain "base" - - # Map to icons used in GUI to represent all the known statuses in both scenarios, during - # installation (`inst` mode) and in a running system (`normal` mode). - # - # Available statuses are - # - # - `[ ]` not selected - # - `[x]` selected - # - `[a]` auto-selected - IMAGES = { - "inst:[a]:enabled" => "auto-selected.svg", - "inst:[x]:enabled" => "inst_checkbox-on.svg", - "inst:[x]:disabled" => "inst_checkbox-on-disabled.svg", - "inst:[ ]:enabled" => "inst_checkbox-off.svg", - "inst:[ ]:disabled" => "inst_checkbox-off-disabled.svg", - "normal:[a]:enabled" => "auto-selected.svg", - "normal:[x]:enabled" => "checkbox-on.svg", - "normal:[ ]:enabled" => "checkbox-off.svg", - # NOTE: Normal theme has no special images for disabled check boxes - "normal:[x]:disabled" => "checkbox-on.svg", - "normal:[ ]:disabled" => "checkbox-off.svg" - }.freeze - private_constant :IMAGES - - # Path to the icons in the system - IMAGES_DIR = "/usr/share/YaST2/theme/current/wizard".freeze - private_constant :IMAGES_DIR - - # Selected status - SELECTED = :selected - private_constant :SELECTED - - # Not selected status - UNSELECTED = :unselected - private_constant :UNSELECTED - - # Auto selected status - AUTO_SELECTED = :auto_selected - private_constant :AUTO_SELECTED - - # Id to identify an event fired by the check box - EVENT_ID = "#checkbox#".freeze - private_constant :EVENT_ID - - # Id to identify an event fired by the check box input - INPUT_EVENT_ID = "#{EVENT_ID}input".freeze - private_constant :INPUT_EVENT_ID - - # Id to identify an event fired by the check box label - LABEL_EVENT_ID = "#{EVENT_ID}label".freeze - private_constant :LABEL_EVENT_ID - - # @!method id - # The item id - # @return [#to_s] - abstract_method :id - - # @!method label - # The item label - # @return [#to_s] - abstract_method :label - - # @return [Symbol] the current item status - attr_reader :status - - # Returns the common identifier of fired events - # - # @return [String] event identifier - def self.event_id - EVENT_ID - end - - # Help text - # - # @return [String] - def self.help - help_text = "<p>" - # TRANSLATORS: help text for a not selected check box - help_text << "#{icon_for(UNSELECTED, mode: mode)} = #{_("Not selected")}<br />" - # TRANSLATORS: help text for a selected check box - help_text << "#{icon_for(SELECTED, mode: mode)} = #{_("Selected")}<br />" - # TRANSLATORS: help text for an automatically selected check box - # (it has a different look that a user selected check box) - help_text << "#{icon_for(AUTO_SELECTED, mode: mode)} = #{_("Auto selected")}" - help_text << "</p>" - help_text - end - - # Returns the icon to be used for an item with given status and state - # - # @see .value_for - # - # @param status [Symbol] the item status (e.g., :selected, :registered, :auto_selected) - # @param mode [String] the running mode, "normal" or "inst" - # @param state [String] the item state, "enabled" or "disabled" - # - # @return [String] an <img> tag when running in GUI mode; plain text otherwise - def self.icon_for(status, mode: "normal", state: "enabled") - value = value_for(status) - - if Yast::UI.TextMode - value - else - # an image key looks like "inst:[a]:enabled" - image_key = [mode, value, state].join(":") - - "<img src=\"#{IMAGES_DIR}/#{IMAGES[image_key]}\">" - end - end - - # Returns the status string representation - # - # @param status [Symbol] the status identifier - # - # @return [String] the status text representation - def self.value_for(status) - case status - when SELECTED - "[x]" - when AUTO_SELECTED - "[a]" - else - "[ ]" - end - end - - # Toggles the current status - def toggle - @status = selected? ? UNSELECTED : SELECTED - end - - # Determines if the item is enabled or not - # - # @return [Boolean] true when item is enabled; false otherwise - def enabled? - true - end - - # Whether item is selected - # - # @return [Boolean] true if the status is selected; false otherwise - def selected? - status == SELECTED - end - - # Whether item is not selected - # - # @return [Boolean] true if the status is not selected; false otherwise - def unselected? - [SELECTED, AUTO_SELECTED].none?(status) - end - - # Whether item is auto selected - # - # @return [Boolean] true if the status is auto selected; false otherwise - def auto_selected? - status == AUTO_SELECTED - end - - # Sets the item as selected - def select! - @status = SELECTED - end - - # Sets the item as not selected - def unselect! - @status = UNSELECTED - end - - # Sets the item as auto-selected - def auto_select! - @status = AUTO_SELECTED - end - - # Returns richtext representation for the item - # - # Basically, an string containing two <a> or <span> tags, depending on the #enabled? method. - # One for the check box input and another for the label. - # - # @return [String] the item richtext representation - def to_richtext - "#{checkbox_input} #{checkbox_label}" - end - - # Determines whether running in installation mode - # - # We do not use Stage.initial because of firstboot, which runs in 'installation' mode - # but in 'firstboot' stage. - # - # @return [Boolean] Boolean if running in installation or update mode - def self.installation? - Yast::Mode.installation || Yast::Mode.update - end - - # Returns the current mode - # - # @return [String] "normal" in a running system; "inst" during the installation - def self.mode - installation? ? "inst" : "normal" - end - - private - - # @see .icon_for - def icon - self.class.icon_for(status, mode: self.class.mode, state: state) - end - - # Builds the check box input representation - # - # @return [String] - def checkbox_input - if enabled? - "<a href=\"#{id}#{INPUT_EVENT_ID}\" style=\"#{text_style}\">#{icon}</a>" - else - "<span style\"#{text_style}\">#{icon}</a>" - end - end - - # Builds the check box label representation - # - # @return [String] - def checkbox_label - if enabled? - "<a href=\"#{id}#{LABEL_EVENT_ID}\" style=\"#{text_style}\">#{label}</a>" - else - "<span style\"#{text_style}\">#{label}</a>" - end - end - - # Returns the current input state - # - # @return [String] "enabled" when item must be enabled; "disabled" otherwise - def state - enabled? ? "enabled" : "disabled" - end - - # Returns style rules for the text - # - # @return [String] the status text representation - def text_style - "text-decoration: none; color: #{color}" - end - - # Determines the color for the text - # - # @return [String] "grey" for a disabled item; - # "white" when enabled and running in installation mode; - # "black" otherwise - def color - return "grey" unless enabled? - return "white" if self.class.installation? - - "black" - end - end - end -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.76/library/cwm/test/multi_status_selector_test.rb new/yast2-4.2.78/library/cwm/test/multi_status_selector_test.rb --- old/yast2-4.2.76/library/cwm/test/multi_status_selector_test.rb 2020-03-23 14:55:14.000000000 +0100 +++ new/yast2-4.2.78/library/cwm/test/multi_status_selector_test.rb 1970-01-01 01:00:00.000000000 +0100 @@ -1,463 +0,0 @@ -# Copyright (c) [2020] SUSE LLC -# -# All Rights Reserved. -# -# This program is free software; you can redistribute it and/or modify it -# under the terms of version 2 of the GNU General Public License as published -# by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, contact SUSE LLC. -# -# To contact SUSE LLC about this file by physical or electronic mail, you may -# find current contact information at www.suse.com. - -require_relative "test_helper" - -require "cwm/rspec" -require "cwm/multi_status_selector" - -class DummyMultiStatusSelector < CWM::MultiStatusSelector - def initialize(items) - @items = items.map { |i| DummyItem.new(i[:id], i[:status], i[:enabled]) } - end - - attr_reader :items - - class DummyItem < Item - def initialize(id, status, enabled) - @id = "dummy-item-#{id}" - @label = "Label for #{@id}" - @status = status - @enabled = enabled - end - - attr_reader :id, :label, :status - - def enabled? - @enabled - end - end -end - -class DummyItem < CWM::MultiStatusSelector::Item - def initialize(id, status, enabled) - @id = "dummy-item-#{id}" - @label = "Label for #{@id}" - @status = status - @enabled = enabled - end - - attr_reader :id, :label, :status -end - -describe CWM::MultiStatusSelector do - subject { DummyMultiStatusSelector.new(items) } - - let(:first_item) { { id: 1, status: :selected, enabled: false } } - let(:second_item) { { id: 2, status: :unselected, enabled: true } } - let(:items) { [first_item, second_item] } - let(:content) { subject.contents.nested_find { |i| i.is_a?(CWM::RichText) } } - - include_examples "CWM::CustomWidget" - - describe "#refresh" do - before do - allow(Yast::UI).to receive(:TextMode).and_return(text_mode) - end - - context "when running in text mode" do - let(:text_mode) { true } - - it "includes <br> tags" do - expect(content).to receive(:value=).with(/<br>/) - - subject.refresh - end - - it "does not include <p> tags" do - expect(content).to_not receive(:value=).with(/<p>/) - - subject.refresh - end - end - - context "when not running in text mode" do - let(:text_mode) { false } - - it "includes <p> tags" do - expect(content).to receive(:value=).with(/<p>/) - - subject.refresh - end - - it "does not include <br> tags" do - expect(content).to_not receive(:value=).with(/<br>/) - - subject.refresh - end - end - end - - describe "#init" do - it "renders all items" do - expect(subject.items).to all(receive(:to_richtext)) - - subject.init - end - end - - describe "#handle" do - let(:item) { subject.items.first } - let(:event) { { "ID" => event_id } } - - context "when handling an event triggered by the check box label" do - let(:event_id) { "#{item.id}#checkbox#label" } - - it "executes the label event handler" do - expect(subject).to receive(:label_event_handler).with(item) - - subject.handle(event) - end - - it "does not execute the input event handler" do - expect(subject).to_not receive(:input_event_handler) - - subject.handle(event) - end - end - - context "when handling an event triggered by the check box input" do - let(:event_id) { "#{item.id}#checkbox#input" } - - it "executes the input event handler" do - expect(subject).to receive(:input_event_handler).with(item) - - subject.handle(event) - end - - it "does not execute the label event handler" do - expect(subject).to_not receive(:label_event_handler) - - subject.handle(event) - end - end - - context "when handling an event not triggered by the item" do - let(:event) { { "ID" => :whatever } } - - it "does not execute the input event handler" do - expect(subject).to_not receive(:input_event_handler) - - subject.handle(event) - end - - it "does not execute the label event handler" do - expect(subject).to_not receive(:label_event_handler) - - subject.handle(event) - end - end - end -end - -describe CWM::MultiStatusSelector::Item do - subject { DummyMultiStatusSelector::DummyItem.new(id, status, enabled) } - - let(:id) { 99 } - let(:status) { nil } - let(:enabled) { true } - - let(:link_id) { "#{subject.id}#{described_class.event_id}" } - let(:regexp_input_link) { /<a href="#{link_id}.*img.*<\/a>/ } - let(:regexp_label_link) { /<a href="#{link_id}.*>#{subject.label}<\/a>/ } - - describe "#toggle" do - context "when item is selected" do - let(:status) { :selected } - - it "changes to unselected" do - expect(subject.status).to eq(:selected) - - subject.toggle - - expect(subject.status).to eq(:unselected) - end - end - - context "when item is not selected" do - let(:status) { :unselected } - - it "changes to selected" do - expect(subject.status).to eq(:unselected) - - subject.toggle - - expect(subject.status).to eq(:selected) - end - end - - context "when item is auto selected" do - let(:status) { :auto_selected } - - it "changes to selected" do - expect(subject.status).to eq(:auto_selected) - - subject.toggle - - expect(subject.status).to eq(:selected) - end - end - - context "when item has an unknown" do - it "changes to selected" do - expect(subject.status).to eq(nil) - - subject.toggle - - expect(subject.status).to eq(:selected) - end - end - end - - describe "#enabled?" do - context "when enabled" do - let(:enabled) { true } - - it "returns true" do - expect(subject.enabled?).to eq(true) - end - end - - context "when not enabled" do - let(:enabled) { false } - - it "returns false" do - expect(subject.enabled?).to eq(false) - end - end - end - - describe "#selected?" do - context "when selected" do - let(:status) { :selected } - - it "returns true" do - expect(subject.selected?).to eq(true) - end - end - - context "when not selected" do - let(:status) { :whatever } - - it "returns false" do - expect(subject.selected?).to eq(false) - end - end - end - - describe "#select!" do - it "sets item as selected" do - subject.select! - - expect(subject.status).to eq(:selected) - end - end - - describe "#unselected?" do - context "when not selected" do - let(:status) { :whatever } - - it "returns true" do - expect(subject.unselected?).to eq(true) - end - end - - context "when selected" do - let(:status) { :selected } - - it "returns false" do - expect(subject.unselected?).to eq(false) - end - end - - context "when auto selected" do - let(:status) { :auto_selected } - - it "returns false" do - expect(subject.unselected?).to eq(false) - end - end - end - - describe "#unselect!" do - it "sets item as unselected" do - subject.unselect! - - expect(subject.status).to eq(:unselected) - end - end - - describe "#auto_selected?" do - context "when auto selected" do - let(:status) { :auto_selected } - - it "returns true" do - expect(subject.auto_selected?).to eq(true) - end - end - - context "when not auto selected" do - let(:status) { :selected } - - it "returns false" do - expect(subject.auto_selected?).to eq(false) - end - end - end - - describe "#auto_select!" do - it "sets item as auto selected" do - subject.auto_select! - - expect(subject.status).to eq(:auto_selected) - end - end - - describe "#to_richtext" do - it "returns a string" do - expect(subject.to_richtext).to be_a(String) - end - - context "when the item is enabled" do - it "includes a link for the input" do - expect(subject.to_richtext).to match(regexp_input_link) - end - - it "includes a link for the label" do - expect(subject.to_richtext).to match(regexp_label_link) - end - end - - context "when the item is not enabled" do - let(:enabled) { false } - - it "uses a grey color" do - expect(subject.to_richtext).to match(/.*color: grey.*/) - end - - it "includes the item label" do - expect(subject.to_richtext).to include(subject.label) - end - - it "does not include a link for the input" do - expect(subject.to_richtext).to_not match(regexp_input_link) - end - - it "does not include a link for the label" do - expect(subject.to_richtext).to_not match(regexp_label_link) - end - end - - context "when running in text mode" do - before { allow(Yast::UI).to receive(:TextMode).and_return(true) } - - context "and the item is selected" do - let(:status) { :selected } - - it "displays `[x]` as icon" do - expect(subject.to_richtext).to include("[x]") - end - end - - context "and the item is auto selected" do - let(:status) { :auto_selected } - - it "displays `[a]` as icon" do - expect(subject.to_richtext).to include("[a]") - end - end - - context "and the item is not selected" do - let(:status) { :unselected } - - it "displays `[ ]` as icon" do - expect(subject.to_richtext).to include("[ ]") - end - end - - context "and the item has an unknown status" do - let(:status) { :unknown } - - it "displays `[ ]` as icon" do - expect(subject.to_richtext).to include("[ ]") - end - end - end - - context "when NOT running in text mode" do - before { allow(Yast::UI).to receive(:TextMode).and_return(false) } - - context "and the item is selected" do - let(:status) { :selected } - - it "displays the selected icon" do - expect(subject.to_richtext).to include("checkbox-on.svg") - end - end - - context "and the item is auto selected" do - let(:status) { :auto_selected } - - it "displays the auto-selected icon" do - expect(subject.to_richtext).to include("auto-selected.svg") - end - end - - context "and the item is not selected" do - let(:status) { :unselected } - - it "displays the unselected icon" do - expect(subject.to_richtext).to include("checkbox-off.svg") - end - end - - context "and the item has an unknown status" do - let(:status) { :unknown } - - it "displays the unselected icon" do - expect(subject.to_richtext).to include("checkbox-off.svg") - end - end - end - end - - describe ".help" do - context "in installation" do - before do - allow(Yast::Mode).to receive(:installation).and_return(true) - allow(Yast::Mode).to receive(:update).and_return(false) - end - - it "uses the installation icon" do - expect(subject.class.help).to include("inst_checkbox-on.svg") - end - end - - context "in installed system" do - before do - allow(Yast::Mode).to receive(:installation).and_return(false) - allow(Yast::Mode).to receive(:update).and_return(false) - end - - it "uses the standard icon" do - expect(subject.class.help).to include("checkbox-on.svg") - end - end - end -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.76/package/yast2.changes new/yast2-4.2.78/package/yast2.changes --- old/yast2-4.2.76/package/yast2.changes 2020-03-23 14:55:14.000000000 +0100 +++ new/yast2-4.2.78/package/yast2.changes 2020-03-26 14:18:52.000000000 +0100 @@ -1,4 +1,18 @@ ------------------------------------------------------------------- +Thu Mar 26 12:57:33 UTC 2020 - David Diaz <dgonza...@suse.com> + +- Remove no longer needed multi status selector since it + does not work as expected (bsc#1167523). +- 4.2.78 + +------------------------------------------------------------------- +Tue Mar 24 16:40:09 UTC 2020 - Ladislav Slezák <lsle...@suse.cz> + +- Fixed alignment in the multi selection CWM widget + (part of bsc#1167523) +- 4.2.77 + +------------------------------------------------------------------- Mon Mar 23 11:15:56 UTC 2020 - Josef Reidinger <jreidin...@suse.com> - Add Popup#SuppressFeedback to allow to hide feedback for certain diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-4.2.76/package/yast2.spec new/yast2-4.2.78/package/yast2.spec --- old/yast2-4.2.76/package/yast2.spec 2020-03-23 14:55:14.000000000 +0100 +++ new/yast2-4.2.78/package/yast2.spec 2020-03-26 14:18:52.000000000 +0100 @@ -17,7 +17,7 @@ Name: yast2 -Version: 4.2.76 +Version: 4.2.78 Release: 0 Summary: YaST2 Main Package License: GPL-2.0-only