Commit 8d33cf69 authored by Vitaliy Vashchenko's avatar Vitaliy Vashchenko

Merge branch 'V3.6.3' into 907-doplnit-gdpr

parents 5a0ed053 0b6ee040
......@@ -15,47 +15,68 @@
before_script:
- ./gradlew unlockIOSKeyChain
- git submodule update --init --recursive
stages:
- build
- unitTest
- iTest-desktop
pre-release:
# Development build
# Runs for every commit
# Connects to development server
dev_debug:
stage: build
only:
- master
- devel
except:
- tags
script:
- ./gradlew clean assemble -PTABLEXIA_ASSETS_UPLOAD=true
- ./gradlew clean assemble -PTABLEXIA_ASSETS_UPLOAD=true -PTABLEXIA_ASSETS_OPTIMIZE=true
artifacts:
expire_in: 2 weeks
paths:
- android/build/outputs/apk/*debug*.apk
- android/build/outputs/apk/*iTest*.apk
- ios/build/robovm/*debug*.ipa
- ios/build/robovm/*iTest*.ipa
- desktop/build/libs/*debug*.jar
- desktop/build/libs/*iTest*.jar
- desktop/build/libs/*debug*.deb
- desktop/build/outputs/*debug*.exe
- desktop/build/outputApp/*debug*.app
debug:
# Release debug build
# Runs only on tags
# Connects to development server
release-debug:
stage: build
except:
- pre-release
- release
only:
- tags
script:
- ./gradlew clean assemble -PTABLEXIA_ASSETS_UPLOAD=true -PTABLEXIA_HD_ASSETS=true
- ./gradlew clean assemble -PTABLEXIA_ASSETS_UPLOAD=true -PTABLEXIA_HD_ASSETS=true -PTABLEXIA_ASSETS_OPTIMIZE=true
artifacts:
expire_in: 2 weeks
paths:
- android/build/outputs/apk/*debug*.apk
- android/build/outputs/apk/*iTest*.apk
- ios/build/robovm/*debug*.ipa
- ios/build/robovm/*iTest*.ipa
- desktop/build/libs/*debug*.jar
- desktop/build/libs/*debug*.deb
- desktop/build/outputs/*debug*.exe
# Actual release build
# Runs only on tags
# Connects to production server
# -PTABLEXIA_RELEASE_BUILD=true - Tells Tablexia to use production server
release:
stage: build
only:
- tags
script:
- ./gradlew clean assemble -PTABLEXIA_ASSETS_UPLOAD=true -PTABLEXIA_HD_ASSETS=true -PTABLEXIA_RELEASE_BUILD=true -PTABLEXIA_ASSETS_OPTIMIZE=true
artifacts:
paths:
- android/build/outputs/apk/*release*.apk
- ios/build/robovm/*release*.ipa
- desktop/build/libs/*release*.deb
- desktop/build/outputs/*release*.exe
unitTest:
stage: unitTest
script:
- ./gradlew test -x prepareAssets -x prepareGraphicAssets -x prepareSoundAssets -x prepareJsonAssets -x processAssets -x runChecksum
iTest-desktop:
stage: iTest-desktop
script:
......@@ -66,17 +87,3 @@ iTest-desktop:
paths:
- desktop/build/libs/iTest_results/*.log
- desktop/build/libs/iTest_results/*error.png
\ No newline at end of file
release:
stage: build
only:
- tags
script:
- ./gradlew clean assemble -PTABLEXIA_ASSETS_UPLOAD=true
artifacts:
paths:
- android/build/outputs/apk/*release*.apk
- ios/build/robovm/*release*.ipa
- desktop/build/libs/*release*.jar
- desktop/build/libs/*release*.deb
- desktop/build/outputs/*release*.exe
- desktop/build/outputApp/*release*.app
......@@ -72,13 +72,13 @@ allprojects {
masterBranch = 'master'
applicationBaseId = 'cz.nic.tablexia'
tablexiaAppName = getTablexiaAppName()
assetsDebugURLPart = onMaster() ? '' : 'debug/'
assetsDebugURLPart = isReleaseBuild() ? '' : 'debug/'
assetsDownloadUrl = project.hasProperty("TABLEXIA_ASSETS_DOWNLOAD_URL") ? ("${TABLEXIA_ASSETS_DOWNLOAD_URL}/${assetsDebugURLPart}") : "<NO_URL_CONFIGURED>/"
assetsUploadURL = (project.hasProperty("TABLEXIA_ASSETS_UPLOAD_USER") && project.hasProperty("TABLEXIA_ASSETS_UPLOAD_URL")) ? "${TABLEXIA_ASSETS_UPLOAD_USER}@${TABLEXIA_ASSETS_UPLOAD_URL}/${assetsDebugURLPart}" : "<NO_URL_CONFIGURED>/"
serverFallbackHost = "<NO_SERVER_HOST>"
serverHost = onMaster() ? getPropertyValueOrFallbackValue("TABLEXIA_SERVER_HOST_PRODUCTION", serverFallbackHost) : getPropertyValueOrFallbackValue("TABLEXIA_SERVER_HOST_DEBUG", serverFallbackHost)
serverSecretFallback = "";
serverSecret = onMaster() ? getPropertyValueOrFallbackValue("TABLEXIA_SERVER_SECRET_PRODUCTION", serverSecretFallback) : getPropertyValueOrFallbackValue("TABLEXIA_SERVER_SECRET_DEBUG", serverSecretFallback);
serverHost = isReleaseBuild() ? getPropertyValueOrFallbackValue("TABLEXIA_SERVER_HOST_PRODUCTION", serverFallbackHost) : getPropertyValueOrFallbackValue("TABLEXIA_SERVER_HOST_DEBUG", serverFallbackHost)
serverSecretFallback = ""
serverSecret = isReleaseBuild() ? getPropertyValueOrFallbackValue("TABLEXIA_SERVER_SECRET_PRODUCTION", serverSecretFallback) : getPropertyValueOrFallbackValue("TABLEXIA_SERVER_SECRET_DEBUG", serverSecretFallback);
tablexiaVersionName = getVersionNameFromGit(TABLEXIA_GIT_PATH)
tablexiaVersionCode = getVersionCodeFromGit(TABLEXIA_GIT_PATH)
tablexiaModelVersionName = getVersionNameFromGit(MODEL_GIT_PATH)
......@@ -94,7 +94,7 @@ allprojects {
//Fallback value if sentry DSN is not defined (gradle parameter SENTRY_DSN_DEBUG or SENTRY_DSN_RELEASE)
sentryDSNFallbackValue = "None"
sentryDSN = onMaster() ? getPropertyValueOrFallbackValue("TABLEXIA_SENTRY_DSN_RELEASE", sentryDSNFallbackValue) : getPropertyValueOrFallbackValue("TABLEXIA_SENTRY_DSN_DEBUG", sentryDSNFallbackValue)
sentryDSN = isReleaseBuild() ? getPropertyValueOrFallbackValue("TABLEXIA_SENTRY_DSN_RELEASE", sentryDSNFallbackValue) : getPropertyValueOrFallbackValue("TABLEXIA_SENTRY_DSN_DEBUG", sentryDSNFallbackValue)
gdxVersion = '1.9.6'
gdxUtilsVersion = '0.13.2'
......@@ -209,10 +209,11 @@ task prepareHdAssets(dependsOn: prepareAssets) {
inputs.dir(hdSourceDir.absolutePath)
inputs.dir(sourceDir.absolutePath)
outputs.dir("${buildDir}/${assetsDirName}/${assetsHdDirName}/${assetsSourceDirName}/")
doLast {
if (project.hasProperty('TABLEXIA_HD_ASSETS') && Boolean.valueOf(TABLEXIA_HD_ASSETS).booleanValue()) {
if (project.hasProperty('TABLEXIA_HD_ASSETS') && Boolean.valueOf(project.property('TABLEXIA_HD_ASSETS')).booleanValue()) {
new File("${assetsDir}/${assetsSourceDirName}/").eachDir() { langDir ->
langDir.eachDir() { sectionDir ->
......@@ -306,6 +307,25 @@ task prepareGraphicAssets(dependsOn: prepareAssets) {
}
}
}
//optimizing for uploading
if (project.hasProperty('TABLEXIA_ASSETS_OPTIMIZE') && Boolean.valueOf(TABLEXIA_ASSETS_OPTIMIZE).booleanValue()) {
println "ASSETS OPTIMIZATION: ENABLED."
println "ASSETS OPTIMIZATION: START."
new File("${assetsDir.absolutePath}/${assetsDestinationDirName}/").eachDir() { dir ->
dir.eachFileRecurse() { file ->
if (file.name.endsWith(".png") && !file.absolutePath.contains("excluded")) {
println "Optimizing: ${file.name}"
exec {
commandLine 'pngquant', '--ext', '.png', '--nofs', '-f', 256, file.absolutePath
}
}
}
}
println "ASSETS OPTIMIZATION: FINISH."
} else {
println "ASSETS OPTIMIZATION NOT CONFIGURED -> SKIPPING OPTIMIZATION"
}
}
}
......@@ -338,7 +358,7 @@ task prepareHdGraphicAssets(dependsOn: prepareHdAssets) {
outputs.dir("${assetsDir.absolutePath}/${assetsDestinationDirName}/")
doLast {
if (project.hasProperty('TABLEXIA_HD_ASSETS') && Boolean.valueOf(TABLEXIA_HD_ASSETS).booleanValue()) {
if (project.hasProperty('TABLEXIA_HD_ASSETS') && Boolean.valueOf(project.property('TABLEXIA_HD_ASSETS')).booleanValue()) {
TexturePacker.Settings settings = new TexturePacker.Settings();
settings.pot = false;
settings.maxWidth = 2048;
......@@ -387,6 +407,23 @@ task prepareHdGraphicAssets(dependsOn: prepareHdAssets) {
}.execute()
}
}
} //optimizing for uploading
if (project.hasProperty('TABLEXIA_ASSETS_OPTIMIZE') && Boolean.valueOf(TABLEXIA_ASSETS_OPTIMIZE).booleanValue()) {
println "HD ASSETS OPTIMIZATION: ENABLED."
println "HD ASSETS OPTIMIZATION: START."
new File("${assetsDir.absolutePath}/${assetsDestinationDirName}/").eachDir() { dir ->
dir.eachFileRecurse() { file ->
if (file.name.endsWith(".png") && !file.absolutePath.contains("excluded")) {
println "Optimizing: ${file.name}"
exec {
commandLine 'pngquant', '--ext', '.png', '--nofs', '-f', 256, file.absolutePath
}
}
}
}
println "HD ASSETS OPTIMIZATION: FINISH."
} else {
println "ASSETS OPTIMIZATION NOT CONFIGURED -> SKIPPING OPTIMIZATION"
}
} else {
println "HD PACK IS NOT REQUESTED"
......@@ -396,7 +433,7 @@ task prepareHdGraphicAssets(dependsOn: prepareHdAssets) {
task zipHdAssets(dependsOn: prepareHdGraphicAssets) {
doLast {
if (project.hasProperty('TABLEXIA_HD_ASSETS') && Boolean.valueOf(TABLEXIA_HD_ASSETS).booleanValue()) {
if (project.hasProperty('TABLEXIA_HD_ASSETS') && Boolean.valueOf(project.property('TABLEXIA_HD_ASSETS')).booleanValue()) {
new File(project(":core").projectDir.absolutePath + "/${assetsDirName}/").eachDir() { dir ->
if (!dir.name.equals('common')) {
......@@ -415,7 +452,7 @@ task zipHdAssets(dependsOn: prepareHdGraphicAssets) {
task processAssets(dependsOn: [':util:checksum:runChecksum', ':util:checksum:runAssetsArchivesChecksum']) {
doLast {
if (project.hasProperty('TABLEXIA_ASSETS_UPLOAD_USER') && project.hasProperty('TABLEXIA_ASSETS_UPLOAD_URL') && project.hasProperty('TABLEXIA_ASSETS_UPLOAD') && Boolean.valueOf(TABLEXIA_ASSETS_UPLOAD).booleanValue()) {
if (project.hasProperty('TABLEXIA_ASSETS_UPLOAD_USER') && project.hasProperty('TABLEXIA_ASSETS_UPLOAD_URL') && project.hasProperty('TABLEXIA_ASSETS_UPLOAD') && Boolean.valueOf(project.property('TABLEXIA_ASSETS_UPLOAD')).booleanValue()) {
def data = new URL(project.assetsDownloadUrl).getText()
rootProject.ext.assetsPackDir.eachFile() { file ->
String fileName = file.getName()
......@@ -450,8 +487,8 @@ task prepareHdPack(dependsOn: [':util:checksum:runHdChecksum', ':util:checksum:r
project.hasProperty('TABLEXIA_ASSETS_UPLOAD_USER') &&
project.hasProperty('TABLEXIA_ASSETS_UPLOAD_URL') &&
project.hasProperty('TABLEXIA_ASSETS_UPLOAD') &&
Boolean.valueOf(TABLEXIA_ASSETS_UPLOAD).booleanValue() &&
Boolean.valueOf(TABLEXIA_HD_ASSETS).booleanValue()) {
Boolean.valueOf(project.property('TABLEXIA_ASSETS_UPLOAD')).booleanValue() &&
Boolean.valueOf(project.property('TABLEXIA_HD_ASSETS')).booleanValue()) {
def data = new URL(project.assetsDownloadUrl).getText()
rootProject.ext.assetsHdPackDir.eachFile() { file ->
......@@ -495,7 +532,7 @@ def getPropertyValueOrFallbackValue(String key, String fallbackValue) {
}
def getTablexiaAppName() {
if (onMaster()) {
if (isReleaseBuild()) {
return "${project.appName}"
} else {
return "${project.appName} (${getBranchNameFromGit()})"
......@@ -503,7 +540,7 @@ def getTablexiaAppName() {
}
def getTablexiaAppId() {
if (onMaster()) {
if (isReleaseBuild()) {
return ""
} else {
return ".${getBranchNameFromGit().trim().replaceAll('-', '').replaceAll('\\.', '').toLowerCase()}"
......@@ -522,7 +559,7 @@ def getVersionNameFromGit(String relativePath) {
String result = stdout.toString().trim();
// for non release branches add number of commits and branch name
if (!onMaster()) {
if (!isReleaseBuild()) {
stdout = new ByteArrayOutputStream()
exec {
workingDir relativePath
......@@ -559,8 +596,8 @@ def getBranchNameFromGit() {
return branchString.contains("/") ? branchString.substring(branchString.lastIndexOf("/") + 1) : branchString
}
boolean onMaster() {
return project.masterBranch.equals(getBranchNameFromGit());
boolean isReleaseBuild() {
return project.hasProperty('TABLEXIA_RELEASE_BUILD') && Boolean.valueOf(project.property('TABLEXIA_RELEASE_BUILD')).booleanValue()
}
def getMapConvertedToString(Map map) {
......
......@@ -32,8 +32,8 @@ import net.engio.mbassy.listener.Handler;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
......@@ -186,15 +186,16 @@ public class Tablexia extends TablexiaApplication {
}
private void initializeLogging() {
if(TablexiaSettings.getInstance().getBuildType().isLogFile()) {
if (TablexiaSettings.getInstance().getBuildType().isLogFile()) {
try {
File file = new File(TablexiaAbstractFileManager.RootStorageType.LOCAL.getStoragePath(), LOG_FILE_NAME);
if(file.exists()) file.mkdirs();
File file = TablexiaAbstractFileManager.RootStorageType.LOCAL.getResolver().resolve(TablexiaAbstractFileManager.RootStorageType.LOCAL.getStoragePath() + LOG_FILE_NAME).file();
if (file.exists()) file.delete();
file.getParentFile().mkdirs();
file.createNewFile();
PrintStream stream = new PrintStream(new FileOutputStream(file));
TeeStream teeStream = new TeeStream(System.out, stream);
System.setOut(new PrintStream(teeStream));
} catch (FileNotFoundException e) {
} catch (IOException e) {
Log.info(getClass(), "Cannot create a log file!");
e.printStackTrace();
}
......
......@@ -463,8 +463,8 @@ public class CrimeSceneGame extends AbstractTablexiaGame<CrimeSceneGameState> {
highlightedGameObjectLayer.addActor(gameObject);
gameObject.getAction().setBounds(0, 0, ACTION_CARD_EXTRA_LARGE, ACTION_CARD_EXTRA_LARGE);
gameObject.setPosition(getViewportWidth() / 2 - ACTION_CARD_EXTRA_LARGE / 2 - actionsStripWidget.getWidth() / 2,
getViewportHeight() / 2 - ACTION_CARD_EXTRA_LARGE / 2);
gameObject.setPosition(getViewportWidth() / 2 - gameObject.getAction().getWidth() / 2 - actionsStripWidget.getWidth() / 2,
getViewportHeight() / 2 - gameObject.getAction().getHeight() / 2);
setDimmerVisible(true);
replayMusic(gameObject);
......
......@@ -24,12 +24,14 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.utils.DragListener;
import com.badlogic.gdx.utils.Timer;
import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.game.AbstractTablexiaGame;
import cz.nic.tablexia.util.entity.Touch;
class DesktopCrimeSceneAction extends CrimeSceneAction {
private static final float DELAY = 0.15f;
private static final float DEFAULT_DESKTOP_DOWNSCALE = 0.45f;
private Touch lastRecordedTouchDown;
private boolean lastTapValid;
......@@ -40,6 +42,9 @@ class DesktopCrimeSceneAction extends CrimeSceneAction {
public DesktopCrimeSceneAction(String texturePath, int orderNumber, int actionSize, AbstractTablexiaGame tablexiaGame, int actionNumber, GameObject gameObject) {
super(texturePath, orderNumber, actionSize, tablexiaGame, actionNumber, gameObject);
if (TablexiaSettings.getInstance().isUseHdAssets()){
setSize(getWidth() * DEFAULT_DESKTOP_DOWNSCALE, getHeight() * DEFAULT_DESKTOP_DOWNSCALE);
}
timer = new Timer();
}
......
......@@ -27,6 +27,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable;
import com.badlogic.gdx.utils.Align;
import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.game.games.protocol.ProtocolGame;
import cz.nic.tablexia.game.games.protocol.controller.RoomPosition;
import cz.nic.tablexia.game.games.protocol.gameobjects.furniture.Furniture;
......@@ -65,6 +66,9 @@ public class GameObject extends ObjectModel {
private static final float LABEL_WITH_RATIO = 0.95f;
private static final float LABEL_PADDING_BOTTOM = 18f;
private static final float DEFAULT_SCALE_NONE = 1f;
private static final float DEFAULT_SCALE_DESKTOP_HD = 0.45f;
private boolean biggerScale = false;
private boolean inRoom = false;
......@@ -149,9 +153,10 @@ public class GameObject extends ObjectModel {
}
private void changeSize() {
if (isInRoom())
objectImage.setSize(objectImage.getDrawable().getMinWidth(), objectImage.getDrawable().getMinHeight());
else
if (isInRoom()) {
float scaleFactor = TablexiaSettings.getInstance().isUseHdAssets() ? DEFAULT_SCALE_DESKTOP_HD : DEFAULT_SCALE_NONE;
objectImage.setSize(objectImage.getDrawable().getMinWidth() * scaleFactor, objectImage.getDrawable().getMinHeight() * scaleFactor);
} else
objectImage.setSize(ProtocolGame.CARD_SMALL_SIZE, ProtocolGame.CARD_SMALL_SIZE);
}
......
......@@ -26,6 +26,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.game.games.protocol.controller.RoomPosition;
import cz.nic.tablexia.game.games.protocol.gameobjects.ObjectModel;
import cz.nic.tablexia.game.games.protocol.utils.ObjectsPositionComparator;
......@@ -42,14 +43,19 @@ public class Furniture extends ObjectModel {
private List<ObjectModel> objectOnFurniture;
private static final float DEFAULT_SCALE_NONE = 1f;
private static final float DEFAULT_SCALE_DESKTOP_HD = 0.45f;
public Furniture(FurnitureType type, TextureRegion texture, float resizePercent) {
this.type = type;
this.texture = texture;
furnitureImage = new Image(texture);
furnitureImage.setWidth((furnitureImage.getDrawable().getMinWidth() * resizePercent) / 100);
furnitureImage.setHeight((furnitureImage.getDrawable().getMinHeight() * resizePercent / 100));
float scaleFactor = TablexiaSettings.getInstance().isUseHdAssets() ? DEFAULT_SCALE_DESKTOP_HD : DEFAULT_SCALE_NONE;
furnitureImage.setWidth((furnitureImage.getDrawable().getMinWidth() * resizePercent * scaleFactor) / 100);
furnitureImage.setHeight((furnitureImage.getDrawable().getMinHeight() * resizePercent * scaleFactor) / 100);
float xMiddle = furnitureImage.getWidth() * type.getMiddleRatio()[0] - 5;
float yMiddle = furnitureImage.getHeight() * type.getMiddleRatio()[1] - 5;
......
......@@ -165,14 +165,14 @@ public class RunesHolder extends Group {
}
public void unfold() {
if (folded) {
if (folded && getStage() != null) {
for (Actor a : getChildren()) {
a.setTouchable(Touchable.enabled);
}
setTouchable(Touchable.childrenOnly);
toFront();
prevX = getX();
float stageWidth = getStage().getWidth() * (1-RunesGame.SIDEBAR_RELATIVE_WIDTH);
float stageWidth = getStage().getWidth() * (1 - RunesGame.SIDEBAR_RELATIVE_WIDTH);
float prevMid = prevX + getWidth() * 0.5f * getScaleX();
setScale(UNFOLDED_SCALE);
float newX = prevMid - getWidth() * getScaleX() * 0.5f;
......
......@@ -725,12 +725,4 @@ public abstract class AbstractMenu extends Stack implements Disposable {
}
};
//////////////////////////// MENU SCROLL
public ScrollPane getScrollPaneByDevice(Actor widget){
if(TablexiaSettings.getInstance().getPlatform() != TablexiaSettings.Platform.DESKTOP)
return new ScrollPane(widget);
return new ScrollPaneWithBars(widget, false, true);
}
}
......@@ -41,6 +41,7 @@ import cz.nic.tablexia.menu.AbstractMenu;
import cz.nic.tablexia.menu.IMenuItem;
import cz.nic.tablexia.menu.main.user.UserSelectBox;
import cz.nic.tablexia.util.ui.dialog.TablexiaComponentDialog;
import cz.nic.tablexia.util.ui.scrollpane.ScrollPaneWithBars;
/**
* MainMenu container
......@@ -121,7 +122,7 @@ public class MainMenu extends AbstractMenu {
Table layoutTable = new Table();
UserSelectBox userSelectBox = new UserSelectBox(SELECTBOX_USER_HEIGHT);
scrollPane = getScrollPaneByDevice(mainMenuVerticalGroup);
scrollPane = new ScrollPaneWithBars(mainMenuVerticalGroup, false, true);
scrollPane.setFillParent(true);
scrollPaneContainer = new Container();
......
......@@ -68,6 +68,7 @@ import cz.nic.tablexia.util.ui.dialog.components.TextContentDialogComponent;
import cz.nic.tablexia.util.ui.dialog.components.TwoButtonContentDialogComponent;
import cz.nic.tablexia.util.ui.dialog.components.UserUuidSyncDialogComponent;
import cz.nic.tablexia.util.ui.dialog.components.ViewportMaximumSizeComponent;
import cz.nic.tablexia.util.ui.scrollpane.ScrollPaneWithBars;
/**
* UserMenu container
......@@ -228,7 +229,7 @@ public class UserMenu extends AbstractMenu {
menuItemsLayout.expand().fill();
}
scrollPane = getScrollPaneByDevice(menuItemsLayout);
scrollPane = new ScrollPaneWithBars(menuItemsLayout, false, true);
scrollPane.setFillParent(true);
container = new Container<>(scrollPane).fill();
container.align(Align.top);
......
......@@ -56,6 +56,7 @@ import cz.nic.tablexia.util.ui.dialog.components.ResizableSpaceContentDialogComp
import cz.nic.tablexia.util.ui.dialog.components.ScrollPaneDialogComponent;
import cz.nic.tablexia.util.ui.dialog.components.TablexiaDialogComponentAdapter;
import cz.nic.tablexia.util.ui.dialog.components.ViewportMaximumSizeComponent;
import cz.nic.tablexia.util.ui.scrollpane.ScrollPaneWithBars;
public class AboutScreen extends AbstractTablexiaScreen<Void> {
......@@ -205,7 +206,7 @@ public class AboutScreen extends AbstractTablexiaScreen<Void> {
prepareContent();
contentScrollPane = new ScrollPane(content);
contentScrollPane = new ScrollPaneWithBars(content, false, true);
contentScrollPane.setScrollingDisabled(true, false);