diff --git a/config/common.cmake b/config/common.cmake index 5d68d9155..cbacf7519 100644 --- a/config/common.cmake +++ b/config/common.cmake @@ -5,7 +5,7 @@ if(CCACHE_PROGRAM) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") endif() -set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version") +set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum OS X deployment version") function(AddCommonConfig addonName) target_compile_features(${addonName} PRIVATE diff --git a/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp b/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp index 512df7b13..40d74d2bb 100644 --- a/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp @@ -51,7 +51,7 @@ QScrollAreaWrap::QScrollAreaWrap(const Napi::CallbackInfo& info) this->rawData = extrautils::configureQWidget( this->getInternalInstance(), this->getInternalInstance()->getFlexNode(), - true); + false); } Napi::Value QScrollAreaWrap::ensureVisible(const Napi::CallbackInfo& info) { diff --git a/src/demo.ts b/src/demo.ts index 0b0e9fd43..fcb97f8b6 100644 --- a/src/demo.ts +++ b/src/demo.ts @@ -1,118 +1,69 @@ import { QMainWindow, QWidget } from '.'; -import { QGridLayout } from './lib/QtWidgets/QGridLayout'; import { QLabel } from './lib/QtWidgets/QLabel'; -import { QTreeWidget } from './lib/QtWidgets/QTreeWidget'; -import { QTreeWidgetItem } from './lib/QtWidgets/QTreeWidgetItem'; -import { QIcon } from './lib/QtGui/QIcon'; -import { QDesktopWidget } from './lib/QtWidgets/QDesktopWidget'; -import { QApplication } from './lib/QtGui/QApplication'; +import { QScrollArea } from './lib/QtWidgets/QScrollArea'; +import { FlexLayout } from './lib/core/FlexLayout'; +import { WidgetEventTypes } from './lib/core/EventWidget'; +import { SizeConstraint } from './lib/QtWidgets/QLayout'; const win = new QMainWindow(); win.resize(500, 500); - -// ex 1 -const desktop = new QDesktopWidget(); -const availableGeometry = desktop.availableGeometry(); -const screenGeometry = desktop.screenGeometry(); -console.log(availableGeometry.width() + 'x' + availableGeometry.height()); -console.log(screenGeometry.width() + 'x' + screenGeometry.height()); -console.log(desktop.screenNumber()); -// ex 2 -const qApp = QApplication.desktop(); -const availableGeometry2 = qApp.availableGeometry(); -const screenGeometry2 = qApp.screenGeometry(); -console.log(availableGeometry2.width() + 'x' + availableGeometry2.height()); -console.log(screenGeometry2.width() + 'x' + screenGeometry2.height()); -console.log(qApp.screenNumber()); +win.setObjectName('win'); const outer = new QWidget(); -const outerLayout = new QGridLayout(); -outer.setLayout(outerLayout); -outer.setInlineStyle('background-color: red'); -console.log(outerLayout.rowCount(), outerLayout.columnCount()); -outerLayout.setColumnStretch(0, 2); -outerLayout.setRowStretch(1, 2); -outerLayout.setColumnMinimumWidth(1, 200); -outerLayout.setRowMinimumHeight(0, 100); -outerLayout.setHorizontalSpacing(20); -outerLayout.setVerticalSpacing(50); +outer.setObjectName('outer'); +outer.setInlineStyle(`border: 2px solid pink;`); +const scrollArea = new QScrollArea(); +scrollArea.setObjectName('scrollArea'); +outer.setLayout(new FlexLayout()); -console.log(outerLayout.columnStretch(0), outerLayout.columnStretch(1)); -console.log(outerLayout.rowMinimumHeight(0), outerLayout.rowMinimumHeight(1)); -console.log(outerLayout.verticalSpacing(), outerLayout.horizontalSpacing()); +scrollArea.setInlineStyle(`flex: 1; min-height:0; align-self:'stretch';border: 2px solid green;`); +const sview = new QWidget(); +sview.setObjectName('sview'); +sview.setLayout(new FlexLayout()); +sview.setInlineStyle(`border:2px solid yellow; min-width: 100%;`); -const columnOne = new QLabel(); -columnOne.setText('One'); -columnOne.setInlineStyle('background-color: blue'); -outerLayout.addWidget(columnOne, 0, 0); - -const columnTwo = new QLabel(); -columnTwo.setText('Two'); -columnTwo.setInlineStyle('background-color: green'); -outerLayout.addWidget(columnTwo, 0, 1); - -const columnThree = new QLabel(); -columnThree.setText('Three'); -columnThree.setInlineStyle('background-color: yellow'); -outerLayout.addWidget(columnThree, 1, 0); - -const columnFour = new QLabel(); -columnFour.setText('Four'); -columnFour.setInlineStyle('background-color: orange'); -outerLayout.addWidget(columnFour, 1, 1); - -const tree = new QTreeWidget(); -tree.setColumnCount(2); -tree.setHeaderLabels(['First Column', 'Second Column']); -tree.setSortingEnabled(true); -tree.setInlineStyle('font-size: 24px'); -outerLayout.addWidget(tree, 2, 0, 2, 0); - -console.log(outerLayout.rowCount(), outerLayout.columnCount()); - -const myImage = './website/static/img/logo.png'; -const icon = new QIcon(myImage); - -const item1 = new QTreeWidgetItem(); -item1.setText(0, `item-1`); -item1.setText(1, `1-item-1`); -item1.setIcon(1, icon); -const item2 = new QTreeWidgetItem(); -item2.setText(0, `item-2`); -item2.setText(1, `1-item-2`); -item2.setIcon(1, icon); -const item3 = new QTreeWidgetItem(); -item3.setText(0, `item-3`); -item3.setText(1, `1-item-3`); -item3.setIcon(1, icon); -const item4 = new QTreeWidgetItem(); -item4.setText(0, `item-4`); -item4.setText(1, `1-item-4`); -item4.setIcon(1, icon); -const item5 = new QTreeWidgetItem(); -item5.setText(0, `item-5`); -item5.setText(1, `1-item-5`); -item5.setIcon(1, icon); -const item6 = new QTreeWidgetItem(); -item6.setText(0, `item-6`); -item6.setText(1, `1-item-6`); -item6.setIcon(1, icon); - -console.info('item6.icon()=', item6.icon(1)); - -tree.addTopLevelItem(item1); -tree.insertTopLevelItems(0, [item2, item3]); -tree.addTopLevelItems([item4, item5]); -tree.insertTopLevelItem(2, item6); - -// Add children to item1 -const c1item1 = new QTreeWidgetItem(item1); -c1item1.setText(0, `c1item1`); -c1item1.setText(1, `c1item2`); -const c1item2 = new QTreeWidgetItem(item1); -c1item2.setText(0, `c1item1`); -c1item2.setText(1, `c1item2`); +const textView = new QLabel(); +textView.setObjectName('textView'); +textView.setText(` +a +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +a +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +a +a +`); +sview.layout?.addWidget(textView); +scrollArea.setWidget(sview); +outer.layout?.addWidget(scrollArea); +outer.addEventListener(WidgetEventTypes.Resize, () => { + // console.log('scrollarea min +' + scrollArea.minimumSize().width(), 'X', scrollArea.minimumSize().height()); + // console.log('scrollarea size +' + scrollArea.size().width(), 'X', scrollArea.size().height()); +}); win.setCentralWidget(outer); win.show(); (global as any).win = win; + +// +// +// +// +// +// +// +// +// diff --git a/src/lib/QtWidgets/QMainWindow.ts b/src/lib/QtWidgets/QMainWindow.ts index a8c270f05..fbbd974eb 100644 --- a/src/lib/QtWidgets/QMainWindow.ts +++ b/src/lib/QtWidgets/QMainWindow.ts @@ -67,6 +67,7 @@ export class QMainWindow extends NodeWidget { const centralWidget = this.centralWidget; this.centralWidget = null; if (centralWidget) { + centralWidget.setFlexNodeSizeControlled(false); this.native.takeCentralWidget(); return centralWidget; } diff --git a/src/lib/QtWidgets/QScrollArea.ts b/src/lib/QtWidgets/QScrollArea.ts index 07c42666f..347875cd8 100644 --- a/src/lib/QtWidgets/QScrollArea.ts +++ b/src/lib/QtWidgets/QScrollArea.ts @@ -42,7 +42,6 @@ export class QScrollArea extends QAbstractScrollArea { super(native); this.native = native; this.setNodeParent(parent); - this.setWidgetResizable(true); } setAlignment(alignment: AlignmentFlag): void { this.setProperty('alignment', alignment); @@ -52,9 +51,6 @@ export class QScrollArea extends QAbstractScrollArea { } setWidgetResizable(resizable: boolean): void { this.setProperty('widgetResizable', resizable); - if (this.contentWidget) { - this.contentWidget.setFlexNodeSizeControlled(resizable); - } } widgetResizable(): boolean { return this.property('widgetResizable').toBool(); @@ -68,7 +64,6 @@ export class QScrollArea extends QAbstractScrollArea { setWidget(widget: NodeWidget): void { this.contentWidget = widget; this.native.setWidget(widget.native); - this.contentWidget.setFlexNodeSizeControlled(this.widgetResizable()); } widget(): NodeWidget | null { if (this.contentWidget) {