Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 0 additions & 76 deletions pdf_viewer/macos_specific.mm
Original file line number Diff line number Diff line change
Expand Up @@ -21,79 +21,3 @@
window.titlebarAppearsTransparent = YES;
window.backgroundColor = [NSColor colorWithRed:red green:green blue:blue alpha: alpha];
}

@interface DraggableTitleView : NSView
@end

@implementation DraggableTitleView

// Handle mouse click events
- (void)mouseDown:(NSEvent *)event {
// double-click to zoom
if ([event clickCount] == 2) {
[self.window zoom:nil];
} else {
// drag Window
[self.window performWindowDragWithEvent:event];
}
}

- (void)updateTrackingAreas {
[self initTrackingArea];
}

-(void) initTrackingArea {
NSTrackingAreaOptions options = (NSTrackingActiveAlways | NSTrackingInVisibleRect |
NSTrackingMouseEnteredAndExited | NSTrackingMouseMoved);

NSTrackingArea *area = [[NSTrackingArea alloc] initWithRect:[self bounds]
options:options
owner:self
userInfo:nil];

[self addTrackingArea:area];
}
-(void)mouseEntered:(NSEvent *)event {
if((self.window.styleMask & NSWindowStyleMaskFullScreen) == 0) {
[[self.window standardWindowButton: NSWindowCloseButton] setHidden:NO];
[[self.window standardWindowButton: NSWindowMiniaturizeButton] setHidden:NO];
[[self.window standardWindowButton: NSWindowZoomButton] setHidden:NO];
}
}

-(void)mouseExited:(NSEvent *)event {
if((self.window.styleMask & NSWindowStyleMaskFullScreen) == 0) {
[[self.window standardWindowButton: NSWindowCloseButton] setHidden:YES];
[[self.window standardWindowButton: NSWindowMiniaturizeButton] setHidden:YES];
[[self.window standardWindowButton: NSWindowZoomButton] setHidden:YES];
}
}

@end

extern "C" void hideWindowTitleBar(WId winId) {
if (winId == 0) return;

NSView* nativeView = reinterpret_cast<NSView*>(winId);
NSWindow* nativeWindow = [nativeView window];

if(nativeWindow.titleVisibility == NSWindowTitleHidden){
return;
}

[[nativeWindow standardWindowButton: NSWindowCloseButton] setHidden:YES];
[[nativeWindow standardWindowButton: NSWindowMiniaturizeButton] setHidden:YES];
[[nativeWindow standardWindowButton: NSWindowZoomButton] setHidden:YES];
NSRect contentViewBounds = nativeWindow.contentView.bounds;

DraggableTitleView *titleBarView = [[DraggableTitleView alloc] initWithFrame:NSMakeRect(0, 0, contentViewBounds.size.width, 22)];
titleBarView.autoresizingMask = NSViewWidthSizable;
titleBarView.wantsLayer = YES;
titleBarView.layer.backgroundColor = [[NSColor clearColor] CGColor];

[nativeWindow.contentView addSubview:titleBarView];

[nativeWindow setTitleVisibility:NSWindowTitleHidden];
[nativeWindow setStyleMask:[nativeWindow styleMask] | NSWindowStyleMaskFullSizeContentView];
[nativeWindow setTitlebarAppearsTransparent:YES];
}
66 changes: 40 additions & 26 deletions pdf_viewer/main_widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,37 @@ extern "C" {

#ifdef Q_OS_MACOS
extern "C" void changeTitlebarColor(WId, double, double, double, double);
extern "C" void hideWindowTitleBar(WId);
#endif

static void set_titlebar_visible(QWidget* widget, bool visible, bool should_show) {
if (widget == nullptr) {
return;
}

Qt::WindowFlags flags = widget->windowFlags();
if (visible) {
flags &= ~Qt::CustomizeWindowHint;
flags |= Qt::WindowContextHelpButtonHint;
flags |= Qt::WindowSystemMenuHint;
flags |= Qt::WindowMinMaxButtonsHint;
flags |= Qt::WindowCloseButtonHint;
flags |= Qt::WindowTitleHint;
}
else {
flags |= Qt::CustomizeWindowHint;
flags &= ~Qt::WindowContextHelpButtonHint;
flags &= ~Qt::WindowSystemMenuHint;
flags &= ~Qt::WindowMinMaxButtonsHint;
flags &= ~Qt::WindowCloseButtonHint;
flags &= ~Qt::WindowTitleHint;
}

widget->setWindowFlags(flags);
if (should_show) {
widget->show();
}
}
Comment thread
KorigamiK marked this conversation as resolved.

extern int next_window_id;

extern bool SHOULD_USE_MULTIPLE_MONITORS;
Expand Down Expand Up @@ -1322,7 +1350,7 @@ MainWidget::MainWidget(fz_context* mupdf_context,
}

if (MACOS_HIDE_TITLEBAR) {
hideWindowTitleBar(winId());
set_titlebar_visible(this, false, false);
}
menu_bar = create_main_menu_bar();
setMenuBar(menu_bar);
Expand Down Expand Up @@ -4312,7 +4340,7 @@ void MainWidget::apply_window_params_for_two_window_mode() {

#ifdef Q_OS_MACOS
if (MACOS_HIDE_TITLEBAR) {
hideWindowTitleBar(helper_window->winId());
set_titlebar_visible(helper_window, false, false);
}
#endif
//int main_window_width = QApplication::desktop()->screenGeometry(0).width();
Expand Down Expand Up @@ -4957,28 +4985,7 @@ void MainWidget::toggle_statusbar() {
}

void MainWidget::toggle_titlebar() {

Qt::WindowFlags flags = windowFlags();
if (flags.testFlag(Qt::WindowTitleHint)) {
flags |= Qt::CustomizeWindowHint;
flags &= ~Qt::WindowContextHelpButtonHint;
flags &= ~Qt::WindowSystemMenuHint;
flags &= ~Qt::WindowMinMaxButtonsHint;
flags &= ~Qt::WindowCloseButtonHint;
flags &= ~Qt::WindowTitleHint;
setWindowFlags(flags);

}
else {
flags &= ~Qt::CustomizeWindowHint;
flags |= Qt::WindowContextHelpButtonHint;
flags |= Qt::WindowSystemMenuHint;
flags |= Qt::WindowMinMaxButtonsHint;
flags |= Qt::WindowCloseButtonHint;
flags |= Qt::WindowTitleHint;
setWindowFlags(flags);
}
show();
set_titlebar_visible(this, !windowFlags().testFlag(Qt::WindowTitleHint), true);
}


Expand Down Expand Up @@ -7839,6 +7846,13 @@ void MainWidget::on_configs_changed(std::vector<std::string>* config_names) {
if (confname == "macos_titlebar_color"){
changeTitlebarColor(winId(), MACOS_TITLEBAR_COLOR[0], MACOS_TITLEBAR_COLOR[1], MACOS_TITLEBAR_COLOR[2], 1.0f);
}
if (confname == "macos_hide_titlebar") {
set_titlebar_visible(this, !MACOS_HIDE_TITLEBAR, true);
if (helper_opengl_widget_ != nullptr) {
QWidget* helper_window = get_top_level_widget(helper_opengl_widget_);
set_titlebar_visible(helper_window, !MACOS_HIDE_TITLEBAR, helper_window->isVisible());
}
}
#endif
if (confname == "use_system_theme") {
set_color_mode_to_system_theme();
Expand Down Expand Up @@ -10301,7 +10315,7 @@ void MainWidget::initialize_helper(){
#ifdef Q_OS_MACOS
QWidget* helper_window = get_top_level_widget(helper_opengl_widget_);
if (MACOS_HIDE_TITLEBAR) {
hideWindowTitleBar(helper_window->winId());
set_titlebar_visible(helper_window, false, false);
}
helper_opengl_widget_->show();
helper_opengl_widget_->hide();
Expand Down
Loading