gimp r25155 - in branches/weskaggs: . app/display
- From: weskaggs svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r25155 - in branches/weskaggs: . app/display
- Date: Fri, 21 Mar 2008 16:53:31 +0000 (GMT)
Author: weskaggs
Date: Fri Mar 21 16:53:31 2008
New Revision: 25155
URL: http://svn.gnome.org/viewvc/gimp?rev=25155&view=rev
Log:
Bill Skaggs <weskaggs primate ucdavis edu>
* app/display/gimpdisplayshell.[ch]
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-progress.c: make GimpDisplayShell
a non-toplevel, and create a simple window to hold it. This is
a transitional step toward making the image display dockable.
Modified:
branches/weskaggs/ChangeLog
branches/weskaggs/app/display/gimpdisplay.c
branches/weskaggs/app/display/gimpdisplayshell-progress.c
branches/weskaggs/app/display/gimpdisplayshell-scale.c
branches/weskaggs/app/display/gimpdisplayshell.c
branches/weskaggs/app/display/gimpdisplayshell.h
Modified: branches/weskaggs/app/display/gimpdisplay.c
==============================================================================
--- branches/weskaggs/app/display/gimpdisplay.c (original)
+++ branches/weskaggs/app/display/gimpdisplay.c Fri Mar 21 16:53:31 2008
@@ -342,9 +342,10 @@
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager)
{
- GimpDisplay *display;
- Gimp *gimp;
- gint ID;
+ GimpDisplay *display;
+ Gimp *gimp;
+ gint ID;
+ GimpDisplayShell *shell;
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
@@ -373,7 +374,10 @@
/* create the shell for the image */
display->shell = gimp_display_shell_new (display, unit, scale,
menu_factory, popup_manager);
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ gimp_display_shell_shrink_wrap (shell);
gtk_widget_show (display->shell);
+ gtk_widget_show (GTK_WIDGET (shell->container_window));
g_signal_connect (GIMP_DISPLAY_SHELL (display->shell)->statusbar, "cancel",
G_CALLBACK (gimp_display_progress_canceled),
@@ -476,8 +480,10 @@
height = SCALEY (shell, gimp_image_get_height (image));
gtk_widget_set_size_request (display->shell, width,
height + toolbar_height + menubar_height);
-
+ gtk_window_resize (shell->container_window, width,
+ height + toolbar_height + menubar_height);
gtk_widget_show (display->shell);
+ gtk_widget_show (GTK_WIDGET (shell->container_window));
g_signal_connect (GIMP_DISPLAY_SHELL (display->shell)->statusbar, "cancel",
G_CALLBACK (gimp_display_progress_canceled),
@@ -628,7 +634,9 @@
/* make a new scratch image if we need one */
if (! gimp->exiting && gimp_container_is_empty (gimp->displays))
+ {
file_create_scratch_image (gimp);
+ }
}
gint
Modified: branches/weskaggs/app/display/gimpdisplayshell-progress.c
==============================================================================
--- branches/weskaggs/app/display/gimpdisplayshell-progress.c (original)
+++ branches/weskaggs/app/display/gimpdisplayshell-progress.c Fri Mar 21 16:53:31 2008
@@ -97,7 +97,7 @@
{
GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (progress);
- return (guint32) gimp_window_get_native (GTK_WINDOW (shell));
+ return (guint32) gimp_window_get_native (shell->container_window);
}
static gboolean
Modified: branches/weskaggs/app/display/gimpdisplayshell-scale.c
==============================================================================
--- branches/weskaggs/app/display/gimpdisplayshell-scale.c (original)
+++ branches/weskaggs/app/display/gimpdisplayshell-scale.c Fri Mar 21 16:53:31 2008
@@ -639,7 +639,7 @@
(gpointer) &shell->scale_dialog);
gtk_window_set_transient_for (GTK_WINDOW (shell->scale_dialog),
- GTK_WINDOW (shell));
+ shell->container_window);
gtk_window_set_destroy_with_parent (GTK_WINDOW (shell->scale_dialog), TRUE);
g_signal_connect (shell->scale_dialog, "response",
Modified: branches/weskaggs/app/display/gimpdisplayshell.c
==============================================================================
--- branches/weskaggs/app/display/gimpdisplayshell.c (original)
+++ branches/weskaggs/app/display/gimpdisplayshell.c Fri Mar 21 16:53:31 2008
@@ -129,8 +129,12 @@
(GimpColorManaged *managed,
gsize *len);
+static void gimp_display_shell_container_window_closed
+ (GtkWidget *widget,
+ GdkEvent *event,
+ GimpDisplayShell *shell);
-G_DEFINE_TYPE_WITH_CODE (GimpDisplayShell, gimp_display_shell, GTK_TYPE_WINDOW,
+G_DEFINE_TYPE_WITH_CODE (GimpDisplayShell, gimp_display_shell, GTK_TYPE_VBOX,
G_IMPLEMENT_INTERFACE (GIMP_TYPE_PROGRESS,
gimp_display_shell_progress_iface_init)
G_IMPLEMENT_INTERFACE (GIMP_TYPE_COLOR_MANAGED,
@@ -218,6 +222,8 @@
static void
gimp_display_shell_init (GimpDisplayShell *shell)
{
+ shell->container_window = NULL;
+
shell->display = NULL;
shell->menubar_manager = NULL;
@@ -332,8 +338,6 @@
shell->highlight = NULL;
shell->mask = NULL;
- gtk_window_set_role (GTK_WINDOW (shell), "gimp-image-window");
- gtk_window_set_resizable (GTK_WINDOW (shell), TRUE);
gtk_widget_set_events (GTK_WIDGET (shell), (GDK_POINTER_MOTION_MASK |
GDK_POINTER_MOTION_HINT_MASK |
@@ -508,6 +512,12 @@
shell->display = NULL;
+ if (shell->container_window)
+ {
+ gtk_widget_destroy (GTK_WIDGET (shell->container_window));
+ shell->container_window = NULL;
+ }
+
GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
@@ -590,7 +600,8 @@
static void
gimp_display_shell_real_scaled (GimpDisplayShell *shell)
{
- GimpContext *user_context;
+ GimpContext *user_context;
+ GtkRequisition requisition;
if (! shell->display)
return;
@@ -604,6 +615,10 @@
if (shell->display == gimp_context_get_display (user_context))
gimp_ui_manager_update (shell->popup_manager, shell->display);
+
+/* gtk_widget_size_request (GTK_WIDGET (shell), &requisition); */
+/* gtk_window_resize (shell->window, */
+/* requisition.width, requisition.height); */
}
static void
@@ -654,6 +669,7 @@
GimpDisplayConfig *display_config;
GimpColorDisplayStack *filter;
Gimp *gimp;
+ GtkWidget *container_window;
GtkWidget *main_vbox;
GtkWidget *disp_vbox;
GtkWidget *upper_hbox;
@@ -715,9 +731,6 @@
display,
FALSE);
- gtk_window_add_accel_group (GTK_WINDOW (shell),
- gtk_ui_manager_get_accel_group (GTK_UI_MANAGER (shell->menubar_manager)));
-
g_signal_connect (shell->menubar_manager, "show-tooltip",
G_CALLBACK (gimp_display_shell_show_tooltip),
shell);
@@ -1093,6 +1106,19 @@
gtk_widget_show (GTK_WIDGET (shell->canvas));
gtk_widget_show (main_vbox);
+
+ container_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ shell->container_window = GTK_WINDOW (container_window);
+ gtk_window_set_role (shell->container_window, "gimp-image-window");
+ gtk_window_set_resizable (shell->container_window, TRUE);
+ gtk_container_add (GTK_CONTAINER (container_window), GTK_WIDGET (shell));
+ gtk_window_add_accel_group (shell->container_window,
+ gtk_ui_manager_get_accel_group (GTK_UI_MANAGER (shell->menubar_manager)));
+
+ g_signal_connect (shell->container_window, "delete-event",
+ G_CALLBACK (gimp_display_shell_container_window_closed),
+ shell);
+
filter = gimp_display_shell_filter_new (shell,
gimp->config->color_management);
if (filter)
@@ -1111,6 +1137,14 @@
return GTK_WIDGET (shell);
}
+static void
+gimp_display_shell_container_window_closed (GtkWidget *widget,
+ GdkEvent *event,
+ GimpDisplayShell *shell)
+{
+ gimp_display_delete (shell->display);
+}
+
void
gimp_display_shell_set_initial_scale (GimpDisplayShell *shell,
gint *n_width_ptr,
@@ -1662,7 +1696,7 @@
gimp_get_user_context (image->gimp),
width, height);
- gtk_window_set_icon (GTK_WINDOW (shell), pixbuf);
+ gtk_window_set_icon (shell->container_window, pixbuf);
}
void
@@ -1730,7 +1764,7 @@
if (width < shell->statusbar->requisition.width)
width = shell->statusbar->requisition.width;
- gtk_window_resize (GTK_WINDOW (shell),
+ gtk_window_resize (shell->container_window,
width + border_x,
height + border_y);
}
Modified: branches/weskaggs/app/display/gimpdisplayshell.h
==============================================================================
--- branches/weskaggs/app/display/gimpdisplayshell.h (original)
+++ branches/weskaggs/app/display/gimpdisplayshell.h Fri Mar 21 16:53:31 2008
@@ -20,7 +20,7 @@
#define __GIMP_DISPLAY_SHELL_H__
-#include <gtk/gtkwindow.h>
+#include <gtk/gtkvbox.h>
#include "libgimpwidgets/gimpwidgets.h"
@@ -63,7 +63,9 @@
struct _GimpDisplayShell
{
- GtkWindow parent_instance;
+ GtkVBox parent_instance;
+
+ GtkWindow *container_window;
GimpDisplay *display;
@@ -196,7 +198,7 @@
struct _GimpDisplayShellClass
{
- GtkWindowClass parent_class;
+ GtkVBoxClass parent_class;
void (* scaled) (GimpDisplayShell *shell);
void (* scrolled) (GimpDisplayShell *shell);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]