From f9bdbf93887313a79528696607d96140f33cbd84 Mon Sep 17 00:00:00 2001 From: Alex Merry Date: Mon, 28 Jan 2013 16:36:58 +0000 Subject: Associate utility windows with current main window This allows the window manager to raise the windows as a group, for example. --- tikzit/src/gtk/Application.m | 5 +++++ tikzit/src/gtk/ContextWindow.h | 2 ++ tikzit/src/gtk/ContextWindow.m | 5 +++++ tikzit/src/gtk/ToolBox.h | 4 +++- tikzit/src/gtk/ToolBox.m | 5 +++++ tikzit/src/gtk/Window.h | 2 +- tikzit/src/gtk/Window.m | 2 ++ 7 files changed, 23 insertions(+), 2 deletions(-) diff --git a/tikzit/src/gtk/Application.m b/tikzit/src/gtk/Application.m index cdf4b4e..61fb85d 100644 --- a/tikzit/src/gtk/Application.m +++ b/tikzit/src/gtk/Application.m @@ -345,6 +345,8 @@ Application* app = nil; object:window]; if ([openWindows count] == 0) { gtk_main_quit(); + } else { + [self setActiveWindow:[openWindows objectAtIndex:0]]; } } @@ -374,6 +376,9 @@ Application* app = nil; [contextWindow setDocument:[window document]]; + [contextWindow setTransientFor:window]; + [toolBox setTransientFor:window]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDocumentChanged:) diff --git a/tikzit/src/gtk/ContextWindow.h b/tikzit/src/gtk/ContextWindow.h index 1c2ca85..64ecd19 100644 --- a/tikzit/src/gtk/ContextWindow.h +++ b/tikzit/src/gtk/ContextWindow.h @@ -25,6 +25,7 @@ @class SelectionPane; @class StyleManager; @class TikzDocument; +@class Window; @interface ContextWindow: NSObject { PropertiesPane *propsPane; @@ -42,6 +43,7 @@ andEdgeStylesModel:(EdgeStylesModel*)esm; - (void) present; +- (void) setTransientFor:(Window*)parent; - (void) loadConfiguration:(Configuration*)config; - (void) saveConfiguration:(Configuration*)config; diff --git a/tikzit/src/gtk/ContextWindow.m b/tikzit/src/gtk/ContextWindow.m index 6fbcc59..a4d33ae 100644 --- a/tikzit/src/gtk/ContextWindow.m +++ b/tikzit/src/gtk/ContextWindow.m @@ -23,6 +23,7 @@ #import "PropertiesPane.h" #import "SelectionPane.h" #import "StyleManager.h" +#import "Window.h" #import "gtkhelpers.h" @@ -119,6 +120,10 @@ static gboolean props_window_delete_event_cb (GtkWidget *widget, GdkEvent *event gtk_window_present (GTK_WINDOW (window)); } +- (void) setTransientFor:(Window*)parent { + gtk_window_set_transient_for (GTK_WINDOW (window), [parent gtkWindow]); +} + - (void) loadConfiguration:(Configuration*)config { [propsPane loadConfiguration:config]; [selPane loadConfiguration:config]; diff --git a/tikzit/src/gtk/ToolBox.h b/tikzit/src/gtk/ToolBox.h index 87ee225..7076417 100644 --- a/tikzit/src/gtk/ToolBox.h +++ b/tikzit/src/gtk/ToolBox.h @@ -19,6 +19,7 @@ #import @class Configuration; +@class Window; @protocol Tool; @interface ToolBox : NSObject { @@ -29,12 +30,13 @@ GtkWidget *configWidget; } -@property (assign) id selectedTool; +@property (assign) id selectedTool; - (id) initWithTools:(NSArray*)tools; - (void) show; - (void) present; +- (void) setTransientFor:(Window*)w; - (void) loadConfiguration:(Configuration*)config; - (void) saveConfiguration:(Configuration*)config; diff --git a/tikzit/src/gtk/ToolBox.m b/tikzit/src/gtk/ToolBox.m index af753d4..5d8f936 100644 --- a/tikzit/src/gtk/ToolBox.m +++ b/tikzit/src/gtk/ToolBox.m @@ -20,6 +20,7 @@ #import "Application.h" #import "Configuration.h" #import "Tool.h" +#import "Window.h" #import "gtkhelpers.h" #import "tztoolpalette.h" @@ -228,6 +229,10 @@ static void tool_button_toggled_cb (GtkWidget *widget, ToolBox *toolBox); gtk_window_present (GTK_WINDOW (window)); } +- (void) setTransientFor:(Window*)parent { + gtk_window_set_transient_for (GTK_WINDOW (window), [parent gtkWindow]); +} + - (void) loadConfiguration:(Configuration*)config { if ([config hasGroup:@"ToolBox"]) { tz_restore_window (GTK_WINDOW (window), diff --git a/tikzit/src/gtk/Window.h b/tikzit/src/gtk/Window.h index bac64a0..e1f64ac 100644 --- a/tikzit/src/gtk/Window.h +++ b/tikzit/src/gtk/Window.h @@ -59,8 +59,8 @@ * The document displayed by the window */ @property (retain) TikzDocument *document; - @property (readonly) BOOL hasFocus; +@property (readonly) GtkWindow *gtkWindow; /** * Create a window with an empty document diff --git a/tikzit/src/gtk/Window.m b/tikzit/src/gtk/Window.m index d5dcf03..15049ea 100644 --- a/tikzit/src/gtk/Window.m +++ b/tikzit/src/gtk/Window.m @@ -97,6 +97,8 @@ static void update_paste_action (GtkClipboard *clipboard, GdkEvent *event, GtkAc @implementation Window +@synthesize gtkWindow=window; + - (id) init { return [self initWithDocument:[TikzDocument documentWithStyleManager:[app styleManager]]]; } -- cgit v1.2.3