Rewrite Dash, remove hardcoded width/height from GenericDisplay
This patch is a near-total rewrite of the Dash. First, the dash code moves into a separate file, dash.js. Inside dash.js, the components are more broken up into separate classes; in particular there's now a Pane class and a MoreLink class. Instead of each section of the dash, when activated, attempting to close all N-1 other sections, instead there is the concept of a single "active pane", and when e.g. activating the More link for documents, if we know there's an active pane which happens to be the apps, close it. Many redundant containers were removed from the dash, and all manual width, height and x/y offsets are entirely gone. We move the visual apperance closer to the design by using the view-more.svg, etc. To complete the removal of height/width calculations from the dash, we also had to do the same for GenericDisplay. Also clean up the positioning inside overlay.js so calculation of children's positioning is inside a single function that flows from screen.width and screen.height, so in the future we can stop passing the width into the Dash constructor and call this once and work on screen resizing.
This commit is contained in:
@ -35,17 +35,16 @@ const MAX_ITEMS = 30;
|
||||
/* This class represents a single display item containing information about an application.
|
||||
*
|
||||
* appInfo - AppInfo object containing information about the application
|
||||
* availableWidth - total width available for the item
|
||||
*/
|
||||
function AppDisplayItem(appInfo, availableWidth) {
|
||||
this._init(appInfo, availableWidth);
|
||||
function AppDisplayItem(appInfo) {
|
||||
this._init(appInfo);
|
||||
}
|
||||
|
||||
AppDisplayItem.prototype = {
|
||||
__proto__: GenericDisplay.GenericDisplayItem.prototype,
|
||||
|
||||
_init : function(appInfo, availableWidth) {
|
||||
GenericDisplay.GenericDisplayItem.prototype._init.call(this, availableWidth);
|
||||
_init : function(appInfo) {
|
||||
GenericDisplay.GenericDisplayItem.prototype._init.call(this);
|
||||
this._appInfo = appInfo;
|
||||
|
||||
this._setItemInfo(appInfo.get_name(), appInfo.get_description());
|
||||
@ -115,7 +114,6 @@ MenuItem.prototype = {
|
||||
this.actor.append(this._icon, Big.BoxPackFlags.NONE);
|
||||
this._text = new Clutter.Text({ color: GenericDisplay.ITEM_DISPLAY_NAME_COLOR,
|
||||
font_name: "Sans 14px",
|
||||
ellipsize: Pango.EllipsizeMode.END,
|
||||
text: name });
|
||||
|
||||
// We use individual boxes for the label and the arrow to ensure that they
|
||||
@ -164,18 +162,16 @@ Signals.addSignalMethods(MenuItem.prototype);
|
||||
/* This class represents a display containing a collection of application items.
|
||||
* The applications are sorted based on their popularity by default, and based on
|
||||
* their name if some search filter is applied.
|
||||
*
|
||||
* width - width available for the display
|
||||
*/
|
||||
function AppDisplay(width) {
|
||||
this._init(width);
|
||||
function AppDisplay() {
|
||||
this._init();
|
||||
}
|
||||
|
||||
AppDisplay.prototype = {
|
||||
__proto__: GenericDisplay.GenericDisplay.prototype,
|
||||
|
||||
_init : function(width) {
|
||||
GenericDisplay.GenericDisplay.prototype._init.call(this, width);
|
||||
_init : function() {
|
||||
GenericDisplay.GenericDisplay.prototype._init.call(this);
|
||||
|
||||
this._menus = [];
|
||||
this._menuDisplays = [];
|
||||
@ -433,8 +429,8 @@ AppDisplay.prototype = {
|
||||
},
|
||||
|
||||
// Creates an AppDisplayItem based on itemInfo, which is expected be an Shell.AppInfo object.
|
||||
_createDisplayItem: function(itemInfo, width) {
|
||||
return new AppDisplayItem(itemInfo, width);
|
||||
_createDisplayItem: function(itemInfo) {
|
||||
return new AppDisplayItem(itemInfo);
|
||||
}
|
||||
};
|
||||
|
||||
@ -488,8 +484,6 @@ WellDisplayItem.prototype = {
|
||||
x_align: Big.BoxAlignment.CENTER });
|
||||
this._nameBox = nameBox;
|
||||
|
||||
this._wordWidth = Shell.Global.get().get_max_word_width(this.actor, appInfo.get_name(),
|
||||
"Sans 12px");
|
||||
this._name = new Clutter.Text({ color: GenericDisplay.ITEM_DISPLAY_NAME_COLOR,
|
||||
font_name: "Sans 12px",
|
||||
line_alignment: Pango.Alignment.CENTER,
|
||||
|
Reference in New Issue
Block a user