Skip to content

Commit 369cd33

Browse files
authored
Merge branch 'JetBrains:jb-main' into cedrickc/web-compose-window-disposal
2 parents 71e2840 + db417f4 commit 369cd33

File tree

45 files changed

+918
-804
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+918
-804
lines changed
Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,39 @@
1-
./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64
21

3-
cd compose/ui/ui/src/uikitInstrumentedTest/launcher
2+
## Building framework with XCTests
3+
./gradlew :compose:ui:ui:linkInstrumentedTestDebugFrameworkUikitSimArm64
44

5+
# Force-close all simulators
56
xcrun simctl shutdown all
67
killall Simulator
7-
defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool false
88

9+
## Configure simulators to disconnect hardware keyboard (and show on-screen keyboard).
10+
# Get list of all devices
11+
devices=$(xcrun simctl list devices --json)
12+
13+
# This assumes you have jq installed; you can also parse manually if not
14+
if ! command -v jq &> /dev/null; then
15+
echo "Error: jq is not installed"
16+
exit 1
17+
fi
18+
19+
# Export current preferences to PREF_PLIST
20+
PREF_PLIST=~/iphonesimulator.plist
21+
defaults export com.apple.iphonesimulator - > "$PREF_PLIST"
22+
23+
# Adding "ConnectHardwareKeyboard = false" for every simulator
24+
echo "$devices" | jq -r '.devices | to_entries[] | select(.key | startswith("com.apple.CoreSimulator.SimRuntime.iOS")) | .value[] | "\(.udid)"' | while read -r UUID; do
25+
/usr/libexec/PlistBuddy -c "Set :DevicePreferences:$UUID:ConnectHardwareKeyboard false" "$PREF_PLIST" 2>/dev/null || \
26+
/usr/libexec/PlistBuddy -c "Add :DevicePreferences:$UUID:ConnectHardwareKeyboard bool false" "$PREF_PLIST"
27+
done
28+
29+
# Import back the modified plist
30+
defaults import com.apple.iphonesimulator "$PREF_PLIST"
31+
32+
## Launch Simulator app
33+
XCODE_PATH=$(xcode-select -p)
34+
SIMULATOR_PATH="$XCODE_PATH/Applications/Simulator.app/Contents/MacOS/Simulator"
35+
open -a $SIMULATOR_PATH
36+
37+
## Launch tests
38+
cd compose/ui/ui/src/uikitInstrumentedTest/launcher
939
xcodebuild test -scheme Launcher-CI -project Launcher.xcodeproj -destination 'platform=iOS Simulator,name=iPhone 16'

compose/desktop/desktop/samples/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ kotlin {
3737

3838
jvmMain.dependencies {
3939
implementation(libs.skikoCurrentOs)
40+
implementation(project(":collection:collection"))
4041
implementation(project(":compose:desktop:desktop"))
4142

42-
implementation("org.jetbrains.compose.material:material-icons-core:1.6.11") {
43+
implementation("org.jetbrains.compose.material:material-icons-core:1.7.3") {
4344
// exclude dependencies, because they override local projects when we build 0.0.0-* version
4445
// (see https://repo1.maven.org/maven2/org/jetbrains/compose/material/material-icons-core-desktop/1.6.11/material-icons-core-desktop-1.6.11.module)
4546
exclude group: "org.jetbrains.compose.runtime"

compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.compose.foundation.ContextMenuDataProvider
2222
import androidx.compose.foundation.ContextMenuItem
2323
import androidx.compose.foundation.ExperimentalFoundationApi
2424
import androidx.compose.foundation.Image
25+
import androidx.compose.foundation.PointerMatcher
2526
import androidx.compose.foundation.ScrollState
2627
import androidx.compose.foundation.VerticalScrollbar
2728
import androidx.compose.foundation.background
@@ -43,7 +44,7 @@ import androidx.compose.foundation.layout.wrapContentSize
4344
import androidx.compose.foundation.lazy.LazyColumn
4445
import androidx.compose.foundation.lazy.items
4546
import androidx.compose.foundation.lazy.rememberLazyListState
46-
import androidx.compose.foundation.mouseClickable
47+
import androidx.compose.foundation.onClick
4748
import androidx.compose.foundation.rememberScrollState
4849
import androidx.compose.foundation.rememberScrollbarAdapter
4950
import androidx.compose.foundation.shape.CircleShape
@@ -101,17 +102,10 @@ import androidx.compose.ui.input.key.isMetaPressed
101102
import androidx.compose.ui.input.key.isShiftPressed
102103
import androidx.compose.ui.input.key.key
103104
import androidx.compose.ui.input.key.onPreviewKeyEvent
105+
import androidx.compose.ui.input.pointer.PointerButton
104106
import androidx.compose.ui.input.pointer.PointerEventType
105107
import androidx.compose.ui.input.pointer.PointerIcon
106-
import androidx.compose.ui.input.pointer.isAltPressed
107-
import androidx.compose.ui.input.pointer.isBackPressed
108108
import androidx.compose.ui.input.pointer.isCtrlPressed
109-
import androidx.compose.ui.input.pointer.isForwardPressed
110-
import androidx.compose.ui.input.pointer.isMetaPressed
111-
import androidx.compose.ui.input.pointer.isPrimaryPressed
112-
import androidx.compose.ui.input.pointer.isSecondaryPressed
113-
import androidx.compose.ui.input.pointer.isShiftPressed
114-
import androidx.compose.ui.input.pointer.isTertiaryPressed
115109
import androidx.compose.ui.input.pointer.onPointerEvent
116110
import androidx.compose.ui.input.pointer.pointerHoverIcon
117111
import androidx.compose.ui.platform.LocalUriHandler
@@ -423,26 +417,33 @@ private fun FrameWindowScope.ScrollableContent(scrollState: ScrollState) {
423417
var clickableText by remember { mutableStateOf("Click me!") }
424418
@OptIn(ExperimentalFoundationApi::class)
425419
Text(
426-
modifier = Modifier.mouseClickable(
427-
onClick = {
428-
clickableText = buildString {
429-
append("Buttons pressed:\n")
430-
append("primary: ${buttons.isPrimaryPressed}\t")
431-
append("secondary: ${buttons.isSecondaryPressed}\t")
432-
append("tertiary: ${buttons.isTertiaryPressed}\t")
433-
append("primary: ${buttons.isPrimaryPressed}\t")
434-
append("back: ${buttons.isBackPressed}\t")
435-
append("forward: ${buttons.isForwardPressed}\t")
436-
437-
append("\n\nKeyboard modifiers pressed:\n")
438-
439-
append("alt: ${keyboardModifiers.isAltPressed}\t")
440-
append("ctrl: ${keyboardModifiers.isCtrlPressed}\t")
441-
append("meta: ${keyboardModifiers.isMetaPressed}\t")
442-
append("shift: ${keyboardModifiers.isShiftPressed}\t")
443-
}
444-
}
445-
),
420+
modifier = Modifier
421+
.onClick(
422+
matcher = PointerMatcher.Primary,
423+
onClick = {
424+
clickableText = "Primary clicked"
425+
},
426+
)
427+
.onClick(
428+
matcher = PointerMatcher.mouse(PointerButton.Secondary),
429+
onClick = {
430+
clickableText = "Secondary clicked"
431+
},
432+
)
433+
.onClick(
434+
matcher = PointerMatcher.mouse(PointerButton.Primary),
435+
onClick = {
436+
clickableText = "Ctrl + Primary clicked"
437+
},
438+
keyboardModifiers = { isCtrlPressed }
439+
)
440+
.onClick(
441+
matcher = PointerMatcher.mouse(PointerButton.Secondary),
442+
onClick = {
443+
clickableText = "Ctrl + Secondary clicked"
444+
},
445+
keyboardModifiers = { isCtrlPressed }
446+
),
446447
text = clickableText
447448
)
448449
}

0 commit comments

Comments
 (0)