[Text Selection] Move SelectionContainer.
-- Move SelectionContainer and SelectionHandles to ui-foundation, to be
able to use Popup.
Test: ./gradlew test
Change-Id: Iaf3aa82b4e248e106838e307433374ca45c60ac9
diff --git a/ui/ui-foundation/api/0.1.0-dev01.txt b/ui/ui-foundation/api/0.1.0-dev01.txt
index eb7f0a5..a22542a 100644
--- a/ui/ui-foundation/api/0.1.0-dev01.txt
+++ b/ui/ui-foundation/api/0.1.0-dev01.txt
@@ -196,6 +196,15 @@
method public static void MutuallyExclusiveSetItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
+ public final class SelectionContainerKt {
+ ctor public SelectionContainerKt();
+ method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+ }
+
+ public final class SelectionHandlesKt {
+ ctor public SelectionHandlesKt();
+ }
+
public final class ToggleableKt {
ctor public ToggleableKt();
method public static void Toggleable(androidx.ui.foundation.selection.ToggleableState value = ToggleableState.Checked, kotlin.jvm.functions.Function0<kotlin.Unit>? kotlin.jvm.functions.Function0<kotlin.Unit> children);
diff --git a/ui/ui-foundation/api/current.txt b/ui/ui-foundation/api/current.txt
index eb7f0a5..a22542a 100644
--- a/ui/ui-foundation/api/current.txt
+++ b/ui/ui-foundation/api/current.txt
@@ -196,6 +196,15 @@
method public static void MutuallyExclusiveSetItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
+ public final class SelectionContainerKt {
+ ctor public SelectionContainerKt();
+ method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+ }
+
+ public final class SelectionHandlesKt {
+ ctor public SelectionHandlesKt();
+ }
+
public final class ToggleableKt {
ctor public ToggleableKt();
method public static void Toggleable(androidx.ui.foundation.selection.ToggleableState value = ToggleableState.Checked, kotlin.jvm.functions.Function0<kotlin.Unit>? kotlin.jvm.functions.Function0<kotlin.Unit> children);
diff --git a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev01.txt b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev01.txt
index eb7f0a5..a22542a 100644
--- a/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev01.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_0.1.0-dev01.txt
@@ -196,6 +196,15 @@
method public static void MutuallyExclusiveSetItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
+ public final class SelectionContainerKt {
+ ctor public SelectionContainerKt();
+ method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+ }
+
+ public final class SelectionHandlesKt {
+ ctor public SelectionHandlesKt();
+ }
+
public final class ToggleableKt {
ctor public ToggleableKt();
method public static void Toggleable(androidx.ui.foundation.selection.ToggleableState value = ToggleableState.Checked, kotlin.jvm.functions.Function0<kotlin.Unit>? kotlin.jvm.functions.Function0<kotlin.Unit> children);
diff --git a/ui/ui-foundation/api/public_plus_experimental_current.txt b/ui/ui-foundation/api/public_plus_experimental_current.txt
index eb7f0a5..a22542a 100644
--- a/ui/ui-foundation/api/public_plus_experimental_current.txt
+++ b/ui/ui-foundation/api/public_plus_experimental_current.txt
@@ -196,6 +196,15 @@
method public static void MutuallyExclusiveSetItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
+ public final class SelectionContainerKt {
+ ctor public SelectionContainerKt();
+ method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+ }
+
+ public final class SelectionHandlesKt {
+ ctor public SelectionHandlesKt();
+ }
+
public final class ToggleableKt {
ctor public ToggleableKt();
method public static void Toggleable(androidx.ui.foundation.selection.ToggleableState value = ToggleableState.Checked, kotlin.jvm.functions.Function0<kotlin.Unit>? kotlin.jvm.functions.Function0<kotlin.Unit> children);
diff --git a/ui/ui-foundation/api/restricted_0.1.0-dev01.txt b/ui/ui-foundation/api/restricted_0.1.0-dev01.txt
index eb7f0a5..a22542a 100644
--- a/ui/ui-foundation/api/restricted_0.1.0-dev01.txt
+++ b/ui/ui-foundation/api/restricted_0.1.0-dev01.txt
@@ -196,6 +196,15 @@
method public static void MutuallyExclusiveSetItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
+ public final class SelectionContainerKt {
+ ctor public SelectionContainerKt();
+ method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+ }
+
+ public final class SelectionHandlesKt {
+ ctor public SelectionHandlesKt();
+ }
+
public final class ToggleableKt {
ctor public ToggleableKt();
method public static void Toggleable(androidx.ui.foundation.selection.ToggleableState value = ToggleableState.Checked, kotlin.jvm.functions.Function0<kotlin.Unit>? kotlin.jvm.functions.Function0<kotlin.Unit> children);
diff --git a/ui/ui-foundation/api/restricted_current.txt b/ui/ui-foundation/api/restricted_current.txt
index eb7f0a5..a22542a 100644
--- a/ui/ui-foundation/api/restricted_current.txt
+++ b/ui/ui-foundation/api/restricted_current.txt
@@ -196,6 +196,15 @@
method public static void MutuallyExclusiveSetItem(boolean selected, kotlin.jvm.functions.Function0<kotlin.Unit> onClick, kotlin.jvm.functions.Function0<kotlin.Unit> children);
}
+ public final class SelectionContainerKt {
+ ctor public SelectionContainerKt();
+ method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
+ }
+
+ public final class SelectionHandlesKt {
+ ctor public SelectionHandlesKt();
+ }
+
public final class ToggleableKt {
ctor public ToggleableKt();
method public static void Toggleable(androidx.ui.foundation.selection.ToggleableState value = ToggleableState.Checked, kotlin.jvm.functions.Function0<kotlin.Unit>? kotlin.jvm.functions.Function0<kotlin.Unit> children);
diff --git a/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionContainer.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/SelectionContainer.kt
similarity index 93%
rename from ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionContainer.kt
rename to ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/SelectionContainer.kt
index c872805..e8afb64 100644
--- a/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionContainer.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/SelectionContainer.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.ui.core.selection
+package androidx.ui.foundation.selection
import androidx.compose.Composable
import androidx.compose.composer
@@ -29,6 +29,10 @@
import androidx.ui.core.ipx
import androidx.ui.core.px
import androidx.ui.core.round
+import androidx.ui.core.selection.Selection
+import androidx.ui.core.selection.SelectionManager
+import androidx.ui.core.selection.SelectionMode
+import androidx.ui.core.selection.SelectionRegistrarAmbient
import androidx.ui.text.style.TextDirection
/**
@@ -119,11 +123,11 @@
selection.endLayoutCoordinates != null
) {
val startOffset = manager.containerLayoutCoordinates.childToLocal(
- selection.startLayoutCoordinates,
+ selection.startLayoutCoordinates!!,
selection.startCoordinates
)
val endOffset = manager.containerLayoutCoordinates.childToLocal(
- selection.endLayoutCoordinates,
+ selection.endLayoutCoordinates!!,
selection.endCoordinates
)
val startAdjustedDistance =
diff --git a/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionHandles.kt b/ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/SelectionHandles.kt
similarity index 96%
rename from ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionHandles.kt
rename to ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/SelectionHandles.kt
index 30b32d7..b7df9be 100644
--- a/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionHandles.kt
+++ b/ui/ui-foundation/src/main/java/androidx/ui/foundation/selection/SelectionHandles.kt
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package androidx.ui.core.selection
+package androidx.ui.foundation.selection
import androidx.compose.Composable
import androidx.compose.composer
@@ -22,6 +22,7 @@
import androidx.compose.unaryPlus
import androidx.ui.core.Draw
import androidx.ui.core.px
+import androidx.ui.core.selection.Selection
import androidx.ui.engine.geometry.Rect
import androidx.ui.graphics.Color
import androidx.ui.graphics.Paint
diff --git a/ui/ui-framework/api/0.1.0-dev01.txt b/ui/ui-framework/api/0.1.0-dev01.txt
index 2e726d6..0f938ce 100644
--- a/ui/ui-framework/api/0.1.0-dev01.txt
+++ b/ui/ui-framework/api/0.1.0-dev01.txt
@@ -273,21 +273,35 @@
method public androidx.ui.core.LayoutCoordinates? getStartLayoutCoordinates();
}
- public final class SelectionContainerKt {
- ctor public SelectionContainerKt();
- method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
- public final class SelectionHandlesKt {
- ctor public SelectionHandlesKt();
- }
-
public final class SelectionKt {
ctor public SelectionKt();
}
+ public final class SelectionManager implements androidx.ui.core.selection.SelectionRegistrar {
+ ctor public SelectionManager();
+ method public androidx.ui.core.PxPosition getAdjustedCoordinates(androidx.ui.core.PxPosition p);
+ method public androidx.ui.core.LayoutCoordinates getContainerLayoutCoordinates();
+ method public androidx.ui.core.selection.SelectionMode getMode();
+ method public kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> getOnSelectionChange();
+ method public androidx.ui.core.selection.Selection? getSelection();
+ method public androidx.ui.core.gesture.DragObserver handleDragObserver(boolean dragStartHandle);
+ method public void onPress(androidx.ui.core.PxPosition position);
+ method public void setContainerLayoutCoordinates(androidx.ui.core.LayoutCoordinates p);
+ method public void setMode(androidx.ui.core.selection.SelectionMode p);
+ method public void setOnSelectionChange(kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> p);
+ method public void setSelection(androidx.ui.core.selection.Selection? p);
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ property public final androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ property public final androidx.ui.core.selection.SelectionMode mode;
+ property public final kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange;
+ property public final androidx.ui.core.selection.Selection? selection;
+ field public androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ }
+
public final class SelectionManagerKt {
ctor public SelectionManagerKt();
+ method public static androidx.compose.Ambient<androidx.ui.core.selection.SelectionRegistrar> getSelectionRegistrarAmbient();
}
public enum SelectionMode {
@@ -295,6 +309,15 @@
enum_constant public static final androidx.ui.core.selection.SelectionMode Vertical;
}
+ public interface SelectionRegistrar {
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ }
+
+ public interface TextSelectionHandler {
+ method public androidx.ui.core.selection.Selection? getSelection(kotlin.Pair<androidx.ui.core.PxPosition,androidx.ui.core.PxPosition> selectionCoordinates, androidx.ui.core.LayoutCoordinates containerLayoutCoordinates, androidx.ui.core.selection.SelectionMode mode);
+ }
+
}
package androidx.ui.graphics.vector {
diff --git a/ui/ui-framework/api/current.txt b/ui/ui-framework/api/current.txt
index 2e726d6..0f938ce 100644
--- a/ui/ui-framework/api/current.txt
+++ b/ui/ui-framework/api/current.txt
@@ -273,21 +273,35 @@
method public androidx.ui.core.LayoutCoordinates? getStartLayoutCoordinates();
}
- public final class SelectionContainerKt {
- ctor public SelectionContainerKt();
- method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
- public final class SelectionHandlesKt {
- ctor public SelectionHandlesKt();
- }
-
public final class SelectionKt {
ctor public SelectionKt();
}
+ public final class SelectionManager implements androidx.ui.core.selection.SelectionRegistrar {
+ ctor public SelectionManager();
+ method public androidx.ui.core.PxPosition getAdjustedCoordinates(androidx.ui.core.PxPosition p);
+ method public androidx.ui.core.LayoutCoordinates getContainerLayoutCoordinates();
+ method public androidx.ui.core.selection.SelectionMode getMode();
+ method public kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> getOnSelectionChange();
+ method public androidx.ui.core.selection.Selection? getSelection();
+ method public androidx.ui.core.gesture.DragObserver handleDragObserver(boolean dragStartHandle);
+ method public void onPress(androidx.ui.core.PxPosition position);
+ method public void setContainerLayoutCoordinates(androidx.ui.core.LayoutCoordinates p);
+ method public void setMode(androidx.ui.core.selection.SelectionMode p);
+ method public void setOnSelectionChange(kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> p);
+ method public void setSelection(androidx.ui.core.selection.Selection? p);
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ property public final androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ property public final androidx.ui.core.selection.SelectionMode mode;
+ property public final kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange;
+ property public final androidx.ui.core.selection.Selection? selection;
+ field public androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ }
+
public final class SelectionManagerKt {
ctor public SelectionManagerKt();
+ method public static androidx.compose.Ambient<androidx.ui.core.selection.SelectionRegistrar> getSelectionRegistrarAmbient();
}
public enum SelectionMode {
@@ -295,6 +309,15 @@
enum_constant public static final androidx.ui.core.selection.SelectionMode Vertical;
}
+ public interface SelectionRegistrar {
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ }
+
+ public interface TextSelectionHandler {
+ method public androidx.ui.core.selection.Selection? getSelection(kotlin.Pair<androidx.ui.core.PxPosition,androidx.ui.core.PxPosition> selectionCoordinates, androidx.ui.core.LayoutCoordinates containerLayoutCoordinates, androidx.ui.core.selection.SelectionMode mode);
+ }
+
}
package androidx.ui.graphics.vector {
diff --git a/ui/ui-framework/api/public_plus_experimental_0.1.0-dev01.txt b/ui/ui-framework/api/public_plus_experimental_0.1.0-dev01.txt
index 2e726d6..0f938ce 100644
--- a/ui/ui-framework/api/public_plus_experimental_0.1.0-dev01.txt
+++ b/ui/ui-framework/api/public_plus_experimental_0.1.0-dev01.txt
@@ -273,21 +273,35 @@
method public androidx.ui.core.LayoutCoordinates? getStartLayoutCoordinates();
}
- public final class SelectionContainerKt {
- ctor public SelectionContainerKt();
- method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
- public final class SelectionHandlesKt {
- ctor public SelectionHandlesKt();
- }
-
public final class SelectionKt {
ctor public SelectionKt();
}
+ public final class SelectionManager implements androidx.ui.core.selection.SelectionRegistrar {
+ ctor public SelectionManager();
+ method public androidx.ui.core.PxPosition getAdjustedCoordinates(androidx.ui.core.PxPosition p);
+ method public androidx.ui.core.LayoutCoordinates getContainerLayoutCoordinates();
+ method public androidx.ui.core.selection.SelectionMode getMode();
+ method public kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> getOnSelectionChange();
+ method public androidx.ui.core.selection.Selection? getSelection();
+ method public androidx.ui.core.gesture.DragObserver handleDragObserver(boolean dragStartHandle);
+ method public void onPress(androidx.ui.core.PxPosition position);
+ method public void setContainerLayoutCoordinates(androidx.ui.core.LayoutCoordinates p);
+ method public void setMode(androidx.ui.core.selection.SelectionMode p);
+ method public void setOnSelectionChange(kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> p);
+ method public void setSelection(androidx.ui.core.selection.Selection? p);
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ property public final androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ property public final androidx.ui.core.selection.SelectionMode mode;
+ property public final kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange;
+ property public final androidx.ui.core.selection.Selection? selection;
+ field public androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ }
+
public final class SelectionManagerKt {
ctor public SelectionManagerKt();
+ method public static androidx.compose.Ambient<androidx.ui.core.selection.SelectionRegistrar> getSelectionRegistrarAmbient();
}
public enum SelectionMode {
@@ -295,6 +309,15 @@
enum_constant public static final androidx.ui.core.selection.SelectionMode Vertical;
}
+ public interface SelectionRegistrar {
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ }
+
+ public interface TextSelectionHandler {
+ method public androidx.ui.core.selection.Selection? getSelection(kotlin.Pair<androidx.ui.core.PxPosition,androidx.ui.core.PxPosition> selectionCoordinates, androidx.ui.core.LayoutCoordinates containerLayoutCoordinates, androidx.ui.core.selection.SelectionMode mode);
+ }
+
}
package androidx.ui.graphics.vector {
diff --git a/ui/ui-framework/api/public_plus_experimental_current.txt b/ui/ui-framework/api/public_plus_experimental_current.txt
index 2e726d6..0f938ce 100644
--- a/ui/ui-framework/api/public_plus_experimental_current.txt
+++ b/ui/ui-framework/api/public_plus_experimental_current.txt
@@ -273,21 +273,35 @@
method public androidx.ui.core.LayoutCoordinates? getStartLayoutCoordinates();
}
- public final class SelectionContainerKt {
- ctor public SelectionContainerKt();
- method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
- public final class SelectionHandlesKt {
- ctor public SelectionHandlesKt();
- }
-
public final class SelectionKt {
ctor public SelectionKt();
}
+ public final class SelectionManager implements androidx.ui.core.selection.SelectionRegistrar {
+ ctor public SelectionManager();
+ method public androidx.ui.core.PxPosition getAdjustedCoordinates(androidx.ui.core.PxPosition p);
+ method public androidx.ui.core.LayoutCoordinates getContainerLayoutCoordinates();
+ method public androidx.ui.core.selection.SelectionMode getMode();
+ method public kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> getOnSelectionChange();
+ method public androidx.ui.core.selection.Selection? getSelection();
+ method public androidx.ui.core.gesture.DragObserver handleDragObserver(boolean dragStartHandle);
+ method public void onPress(androidx.ui.core.PxPosition position);
+ method public void setContainerLayoutCoordinates(androidx.ui.core.LayoutCoordinates p);
+ method public void setMode(androidx.ui.core.selection.SelectionMode p);
+ method public void setOnSelectionChange(kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> p);
+ method public void setSelection(androidx.ui.core.selection.Selection? p);
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ property public final androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ property public final androidx.ui.core.selection.SelectionMode mode;
+ property public final kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange;
+ property public final androidx.ui.core.selection.Selection? selection;
+ field public androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ }
+
public final class SelectionManagerKt {
ctor public SelectionManagerKt();
+ method public static androidx.compose.Ambient<androidx.ui.core.selection.SelectionRegistrar> getSelectionRegistrarAmbient();
}
public enum SelectionMode {
@@ -295,6 +309,15 @@
enum_constant public static final androidx.ui.core.selection.SelectionMode Vertical;
}
+ public interface SelectionRegistrar {
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ }
+
+ public interface TextSelectionHandler {
+ method public androidx.ui.core.selection.Selection? getSelection(kotlin.Pair<androidx.ui.core.PxPosition,androidx.ui.core.PxPosition> selectionCoordinates, androidx.ui.core.LayoutCoordinates containerLayoutCoordinates, androidx.ui.core.selection.SelectionMode mode);
+ }
+
}
package androidx.ui.graphics.vector {
diff --git a/ui/ui-framework/api/restricted_0.1.0-dev01.txt b/ui/ui-framework/api/restricted_0.1.0-dev01.txt
index 2e726d6..0f938ce 100644
--- a/ui/ui-framework/api/restricted_0.1.0-dev01.txt
+++ b/ui/ui-framework/api/restricted_0.1.0-dev01.txt
@@ -273,21 +273,35 @@
method public androidx.ui.core.LayoutCoordinates? getStartLayoutCoordinates();
}
- public final class SelectionContainerKt {
- ctor public SelectionContainerKt();
- method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
- public final class SelectionHandlesKt {
- ctor public SelectionHandlesKt();
- }
-
public final class SelectionKt {
ctor public SelectionKt();
}
+ public final class SelectionManager implements androidx.ui.core.selection.SelectionRegistrar {
+ ctor public SelectionManager();
+ method public androidx.ui.core.PxPosition getAdjustedCoordinates(androidx.ui.core.PxPosition p);
+ method public androidx.ui.core.LayoutCoordinates getContainerLayoutCoordinates();
+ method public androidx.ui.core.selection.SelectionMode getMode();
+ method public kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> getOnSelectionChange();
+ method public androidx.ui.core.selection.Selection? getSelection();
+ method public androidx.ui.core.gesture.DragObserver handleDragObserver(boolean dragStartHandle);
+ method public void onPress(androidx.ui.core.PxPosition position);
+ method public void setContainerLayoutCoordinates(androidx.ui.core.LayoutCoordinates p);
+ method public void setMode(androidx.ui.core.selection.SelectionMode p);
+ method public void setOnSelectionChange(kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> p);
+ method public void setSelection(androidx.ui.core.selection.Selection? p);
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ property public final androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ property public final androidx.ui.core.selection.SelectionMode mode;
+ property public final kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange;
+ property public final androidx.ui.core.selection.Selection? selection;
+ field public androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ }
+
public final class SelectionManagerKt {
ctor public SelectionManagerKt();
+ method public static androidx.compose.Ambient<androidx.ui.core.selection.SelectionRegistrar> getSelectionRegistrarAmbient();
}
public enum SelectionMode {
@@ -295,6 +309,15 @@
enum_constant public static final androidx.ui.core.selection.SelectionMode Vertical;
}
+ public interface SelectionRegistrar {
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ }
+
+ public interface TextSelectionHandler {
+ method public androidx.ui.core.selection.Selection? getSelection(kotlin.Pair<androidx.ui.core.PxPosition,androidx.ui.core.PxPosition> selectionCoordinates, androidx.ui.core.LayoutCoordinates containerLayoutCoordinates, androidx.ui.core.selection.SelectionMode mode);
+ }
+
}
package androidx.ui.graphics.vector {
diff --git a/ui/ui-framework/api/restricted_current.txt b/ui/ui-framework/api/restricted_current.txt
index 2e726d6..0f938ce 100644
--- a/ui/ui-framework/api/restricted_current.txt
+++ b/ui/ui-framework/api/restricted_current.txt
@@ -273,21 +273,35 @@
method public androidx.ui.core.LayoutCoordinates? getStartLayoutCoordinates();
}
- public final class SelectionContainerKt {
- ctor public SelectionContainerKt();
- method public static void SelectionContainer(androidx.ui.core.selection.Selection? selection, kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange, androidx.ui.core.selection.SelectionMode mode = SelectionMode.Vertical, kotlin.jvm.functions.Function0<kotlin.Unit> children);
- }
-
- public final class SelectionHandlesKt {
- ctor public SelectionHandlesKt();
- }
-
public final class SelectionKt {
ctor public SelectionKt();
}
+ public final class SelectionManager implements androidx.ui.core.selection.SelectionRegistrar {
+ ctor public SelectionManager();
+ method public androidx.ui.core.PxPosition getAdjustedCoordinates(androidx.ui.core.PxPosition p);
+ method public androidx.ui.core.LayoutCoordinates getContainerLayoutCoordinates();
+ method public androidx.ui.core.selection.SelectionMode getMode();
+ method public kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> getOnSelectionChange();
+ method public androidx.ui.core.selection.Selection? getSelection();
+ method public androidx.ui.core.gesture.DragObserver handleDragObserver(boolean dragStartHandle);
+ method public void onPress(androidx.ui.core.PxPosition position);
+ method public void setContainerLayoutCoordinates(androidx.ui.core.LayoutCoordinates p);
+ method public void setMode(androidx.ui.core.selection.SelectionMode p);
+ method public void setOnSelectionChange(kotlin.jvm.functions.Function1<? super androidx.ui.core.selection.Selection,kotlin.Unit> p);
+ method public void setSelection(androidx.ui.core.selection.Selection? p);
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ property public final androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ property public final androidx.ui.core.selection.SelectionMode mode;
+ property public final kotlin.jvm.functions.Function1<androidx.ui.core.selection.Selection,kotlin.Unit> onSelectionChange;
+ property public final androidx.ui.core.selection.Selection? selection;
+ field public androidx.ui.core.LayoutCoordinates containerLayoutCoordinates;
+ }
+
public final class SelectionManagerKt {
ctor public SelectionManagerKt();
+ method public static androidx.compose.Ambient<androidx.ui.core.selection.SelectionRegistrar> getSelectionRegistrarAmbient();
}
public enum SelectionMode {
@@ -295,6 +309,15 @@
enum_constant public static final androidx.ui.core.selection.SelectionMode Vertical;
}
+ public interface SelectionRegistrar {
+ method public Object subscribe(androidx.ui.core.selection.TextSelectionHandler handler);
+ method public void unsubscribe(Object key);
+ }
+
+ public interface TextSelectionHandler {
+ method public androidx.ui.core.selection.Selection? getSelection(kotlin.Pair<androidx.ui.core.PxPosition,androidx.ui.core.PxPosition> selectionCoordinates, androidx.ui.core.LayoutCoordinates containerLayoutCoordinates, androidx.ui.core.selection.SelectionMode mode);
+ }
+
}
package androidx.ui.graphics.vector {
diff --git a/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionManager.kt b/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionManager.kt
index d7edee4..4af3009 100644
--- a/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionManager.kt
+++ b/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionManager.kt
@@ -22,7 +22,10 @@
import androidx.ui.core.gesture.DragObserver
import androidx.ui.core.px
-internal class SelectionManager : SelectionRegistrar {
+/**
+ * A bridge class between user interaction to the text widgets for text selection.
+ */
+class SelectionManager : SelectionRegistrar {
/**
* The current selection.
*/
@@ -185,5 +188,7 @@
}
}
-/** Ambient of SelectionRegistrar for SelectionManager. */
-internal val SelectionRegistrarAmbient = Ambient.of<SelectionRegistrar> { SelectionManager() }
+/**
+ * Ambient of SelectionRegistrar for SelectionManager.
+ */
+val SelectionRegistrarAmbient = Ambient.of<SelectionRegistrar> { SelectionManager() }
diff --git a/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionRegistrar.kt b/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionRegistrar.kt
index 598dea6..143d8bc 100644
--- a/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionRegistrar.kt
+++ b/ui/ui-framework/src/main/java/androidx/ui/core/selection/SelectionRegistrar.kt
@@ -20,7 +20,7 @@
* An interface allowing a Text composable to "register" and "unregister" itself with the class
* implementing the interface.
*/
-internal interface SelectionRegistrar {
+interface SelectionRegistrar {
// TODO(qqd): Replace Any with a type in future.
fun subscribe(handler: TextSelectionHandler): Any
diff --git a/ui/ui-framework/src/main/java/androidx/ui/core/selection/TextSelectionHandler.kt b/ui/ui-framework/src/main/java/androidx/ui/core/selection/TextSelectionHandler.kt
index d58caf5..8673878 100644
--- a/ui/ui-framework/src/main/java/androidx/ui/core/selection/TextSelectionHandler.kt
+++ b/ui/ui-framework/src/main/java/androidx/ui/core/selection/TextSelectionHandler.kt
@@ -24,7 +24,7 @@
* selection in a selection container as a pair, and the layout coordinates of the selection
* container.
*/
-internal interface TextSelectionHandler {
+interface TextSelectionHandler {
fun getSelection(
selectionCoordinates: Pair<PxPosition, PxPosition>,
containerLayoutCoordinates: LayoutCoordinates,
diff --git a/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeText.kt b/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeText.kt
index 4211daf..4b508f9 100644
--- a/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeText.kt
+++ b/ui/ui-text/integration-tests/text-demos/src/main/java/androidx/ui/text/demos/ComposeText.kt
@@ -23,7 +23,6 @@
import androidx.ui.core.Text
import androidx.ui.core.px
import androidx.ui.core.selection.Selection
-import androidx.ui.core.selection.SelectionContainer
import androidx.ui.core.selection.SelectionMode
import androidx.ui.engine.geometry.Offset
import androidx.ui.text.style.BaselineShift
@@ -46,6 +45,7 @@
import androidx.ui.text.style.TextOverflow
import androidx.ui.core.Sp
import androidx.ui.core.sp
+import androidx.ui.foundation.selection.SelectionContainer
import androidx.ui.text.AnnotatedString
import androidx.ui.text.LocaleList
import androidx.ui.text.style.TextIndent