summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@cs.ox.ac.uk>2013-01-28 16:36:58 +0000
committerAlex Merry <alex.merry@cs.ox.ac.uk>2013-01-28 16:36:58 +0000
commitf9bdbf93887313a79528696607d96140f33cbd84 (patch)
tree2981a41f81daba5c33e7131a30eb61fef42bfa4a
parentb8c6a1cf4fd38820549976cf5f7b8fffb9b1248d (diff)
Associate utility windows with current main window
This allows the window manager to raise the windows as a group, for example.
-rw-r--r--tikzit/src/gtk/Application.m5
-rw-r--r--tikzit/src/gtk/ContextWindow.h2
-rw-r--r--tikzit/src/gtk/ContextWindow.m5
-rw-r--r--tikzit/src/gtk/ToolBox.h4
-rw-r--r--tikzit/src/gtk/ToolBox.m5
-rw-r--r--tikzit/src/gtk/Window.h2
-rw-r--r--tikzit/src/gtk/Window.m2
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 <gtk/gtk.h>
@class Configuration;
+@class Window;
@protocol Tool;
@interface ToolBox : NSObject {
@@ -29,12 +30,13 @@
GtkWidget *configWidget;
}
-@property (assign) id<Tool> selectedTool;
+@property (assign) id<Tool> 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]]];
}