* opt: proxy

* opt: calcWindowPosition

* fix: height depend on svg

* bump

* fix

* ci: cache linux

* string systemProxyPort

---------

Co-authored-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
My-Responsitories
2025-10-04 09:44:41 +08:00
committed by GitHub
parent a928e48159
commit a5715868b3
9 changed files with 315 additions and 173 deletions

View File

@@ -1,34 +1,37 @@
import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:screen_retriever/screen_retriever.dart';
Future<Offset> calcWindowPosition(Size windowSize) async {
Display primaryDisplay = await screenRetriever.getPrimaryDisplay();
List<Display> allDisplays = await screenRetriever.getAllDisplays();
Offset cursorScreenPoint = await screenRetriever.getCursorScreenPoint();
final allDisplays = screenRetriever.getAllDisplays();
final cursorScreenPoint = await screenRetriever.getCursorScreenPoint();
Display currentDisplay = allDisplays.firstWhere(
(display) => Rect.fromLTWH(
display.visiblePosition!.dx,
display.visiblePosition!.dy,
display.size.width,
display.size.height,
).contains(cursorScreenPoint),
orElse: () => primaryDisplay,
);
final currentDisplay =
(await allDisplays).firstWhereOrNull(
(display) => (display.visiblePosition! & display.size).contains(
cursorScreenPoint,
),
) ??
await screenRetriever.getPrimaryDisplay();
num visibleWidth = currentDisplay.size.width;
num visibleHeight = currentDisplay.size.height;
num visibleStartX = 0;
num visibleStartY = 0;
if (currentDisplay.visibleSize != null) {
visibleWidth = currentDisplay.visibleSize!.width;
visibleHeight = currentDisplay.visibleSize!.height;
final double visibleWidth;
final double visibleHeight;
if (currentDisplay.visibleSize case final size?) {
visibleWidth = size.width;
visibleHeight = size.height;
} else {
visibleWidth = currentDisplay.size.width;
visibleHeight = currentDisplay.size.height;
}
if (currentDisplay.visiblePosition != null) {
visibleStartX = currentDisplay.visiblePosition!.dx;
visibleStartY = currentDisplay.visiblePosition!.dy;
final double visibleStartX;
final double visibleStartY;
if (currentDisplay.visiblePosition case final offset?) {
visibleStartX = offset.dx;
visibleStartY = offset.dy;
} else {
visibleStartX = visibleStartY = 0;
}
final windowPosition = Pref.windowPosition;