Skip to content

Commit 7c87ef6

Browse files
committed
refactor(tray): extract mainOrFirstScreen screen fallback into function.
The logic was duplicated across the tray account popup files. Add a single helper in TrayPopupViewUtils. Assisted-by: Claude Code:claude-opus-4-8 Signed-off-by: Camila Ayres <camila.ayres@nextcloud.com>
1 parent 0c865e7 commit 7c87ef6

4 files changed

Lines changed: 13 additions & 7 deletions

File tree

src/gui/macOS/trayaccountpopup/ncaccountactionspopup.mm

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,8 +207,7 @@ - (void)resizeToFitPreservingTopEdge:(BOOL)preserveTopEdge topEdge:(CGFloat)topE
207207
}
208208
auto screen = self.screen;
209209
if (!screen) {
210-
NSScreen *const mainScreen = NSScreen.mainScreen;
211-
screen = mainScreen ? mainScreen : NSScreen.screens.firstObject;
210+
screen = OCC::Mac::TrayPopupViewUtils::mainOrFirstScreen();
212211
}
213212
if (screen) {
214213
frame.origin = clampedPopupOrigin(frame.origin, frame.size, screen.visibleFrame);

src/gui/macOS/trayaccountpopup/trayaccountpopup_mac.mm

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
static NSScreen *nsScreenForQtScreen(QScreen *qtScreen)
2121
{
2222
if (!qtScreen) {
23-
NSScreen *const mainScreen = NSScreen.mainScreen;
24-
return mainScreen ? mainScreen : NSScreen.screens.firstObject;
23+
return mainOrFirstScreen();
2524
}
2625

2726
const auto qtScreenName = qtScreen->name().toNSString();
@@ -37,8 +36,7 @@
3736
return [NSScreen.screens objectAtIndex:screenIndex];
3837
}
3938

40-
NSScreen *const mainScreen = NSScreen.mainScreen;
41-
return mainScreen ? mainScreen : NSScreen.screens.firstObject;
39+
return mainOrFirstScreen();
4240
}
4341

4442
namespace OCC {

src/gui/macOS/trayaccountpopup/trayaccountpopupviewutils.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ void addOwnedArrangedSubview(NSStackView *stack, NSView *view);
2222
// The subtle row highlight colour for the current (light/dark) appearance.
2323
NSColor *hoverColor();
2424

25+
// Main screen, or the first screen as fallback.
26+
NSScreen *mainOrFirstScreen();
27+
2528
// Clamp a popup origin toward the screen's visible frame, inset by kScreenEdgePadding.
2629
// A popup larger than the visible frame can still overflow its far edge.
2730
NSPoint clampedPopupOrigin(const NSPoint origin, const NSSize size, const NSRect visibleFrame);

src/gui/macOS/trayaccountpopup/trayaccountpopupviewutils.mm

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ static CGFloat clampedPopupOriginCoordinate(const CGFloat origin, const CGFloat
1919
return origin < minOrigin ? minOrigin : (origin > maxOrigin ? maxOrigin : origin);
2020
}
2121

22+
NSScreen *mainOrFirstScreen()
23+
{
24+
NSScreen *const mainScreen = NSScreen.mainScreen;
25+
return mainScreen ? mainScreen : NSScreen.screens.firstObject;
26+
}
27+
2228
NSPoint clampedPopupOrigin(const NSPoint origin, const NSSize size, const NSRect visibleFrame)
2329
{
2430
return NSMakePoint(clampedPopupOriginCoordinate(origin.x, NSMinX(visibleFrame), NSMaxX(visibleFrame), size.width),
@@ -166,7 +172,7 @@ void positionPopupFromRow(NSPanel *popup, NSView *row)
166172

167173
auto screen = row.window.screen;
168174
if (!screen) {
169-
screen = NSScreen.mainScreen ?: NSScreen.screens.firstObject;
175+
screen = mainOrFirstScreen();
170176
}
171177
const auto visibleFrame = screen.visibleFrame;
172178
const auto rightEdge = NSMaxX(visibleFrame) - kScreenEdgePadding;

0 commit comments

Comments
 (0)