Move the GtkWidget::style_set() handler to GimpImageWindow

...and remove it from GimpDisplayShell completely.
This commit is contained in:
Michael Natterer
2009-09-23 18:13:08 +02:00
parent 10b98034d4
commit 03fcc99bbf
2 changed files with 43 additions and 45 deletions

View File

@ -123,8 +123,6 @@ static gboolean
gimp_display_shell_window_state_event (GtkWidget *widget,
GdkEventWindowState *event);
static gboolean gimp_display_shell_popup_menu (GtkWidget *widget);
static void gimp_display_shell_style_set (GtkWidget *widget,
GtkStyle *prev_style);
static void gimp_display_shell_real_scaled (GimpDisplayShell *shell);
@ -205,7 +203,6 @@ gimp_display_shell_class_init (GimpDisplayShellClass *klass)
widget_class->configure_event = gimp_display_shell_configure_event;
widget_class->window_state_event = gimp_display_shell_window_state_event;
widget_class->popup_menu = gimp_display_shell_popup_menu;
widget_class->style_set = gimp_display_shell_style_set;
klass->scaled = gimp_display_shell_real_scaled;
klass->scrolled = NULL;
@ -668,48 +665,6 @@ gimp_display_shell_popup_menu (GtkWidget *widget)
return TRUE;
}
static void
gimp_display_shell_style_set (GtkWidget *widget,
GtkStyle *prev_style)
{
GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (widget);
GtkRequisition requisition;
GdkGeometry geometry;
GdkWindowHints geometry_mask;
GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
/* FIXME image window */
gtk_widget_size_request (GIMP_IMAGE_WINDOW (shell)->statusbar, &requisition);
geometry.min_height = 23;
geometry.min_width = requisition.width;
geometry.min_height += requisition.height;
/* FIXME image window */
if (GIMP_IMAGE_WINDOW (shell)->menubar)
{
gtk_widget_size_request (GIMP_IMAGE_WINDOW (shell)->menubar, &requisition);
geometry.min_height += requisition.height;
}
geometry_mask = GDK_HINT_MIN_SIZE;
/* Only set user pos on the empty display because it gets a pos
* set by gimp. All other displays should be placed by the window
* manager. See http://bugzilla.gnome.org/show_bug.cgi?id=559580
*/
if (! shell->display->image)
geometry_mask |= GDK_HINT_USER_POS;
gtk_window_set_geometry_hints (GTK_WINDOW (widget), NULL,
&geometry, geometry_mask);
gimp_dialog_factory_set_has_min_size (GTK_WINDOW (widget), TRUE);
}
static void
gimp_display_shell_real_scaled (GimpDisplayShell *shell)
{

View File

@ -66,6 +66,8 @@ static void gimp_image_window_destroy (GtkObject *object);
static gboolean gimp_image_window_window_state (GtkWidget *widget,
GdkEventWindowState *event);
static void gimp_image_window_style_set (GtkWidget *widget,
GtkStyle *prev_style);
static void gimp_image_window_show_tooltip (GimpUIManager *manager,
const gchar *tooltip,
@ -102,6 +104,7 @@ gimp_image_window_class_init (GimpImageWindowClass *klass)
gtk_object_class->destroy = gimp_image_window_destroy;
widget_class->window_state_event = gimp_image_window_window_state;
widget_class->style_set = gimp_image_window_style_set;
g_object_class_install_property (object_class, PROP_MENU_FACTORY,
g_param_spec_object ("menu-factory",
@ -302,6 +305,46 @@ gimp_image_window_window_state (GtkWidget *widget,
return FALSE;
}
static void
gimp_image_window_style_set (GtkWidget *widget,
GtkStyle *prev_style)
{
GimpImageWindow *window = GIMP_IMAGE_WINDOW (widget);
GtkRequisition requisition;
GdkGeometry geometry;
GdkWindowHints geometry_mask;
GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
gtk_widget_size_request (window->statusbar, &requisition);
geometry.min_height = 23;
geometry.min_width = requisition.width;
geometry.min_height += requisition.height;
if (window->menubar)
{
gtk_widget_size_request (window->menubar, &requisition);
geometry.min_height += requisition.height;
}
geometry_mask = GDK_HINT_MIN_SIZE;
/* Only set user pos on the empty display because it gets a pos
* set by gimp. All other displays should be placed by the window
* manager. See http://bugzilla.gnome.org/show_bug.cgi?id=559580
*/
if (! gimp_image_window_get_active_display (window)->image)
geometry_mask |= GDK_HINT_USER_POS;
gtk_window_set_geometry_hints (GTK_WINDOW (widget), NULL,
&geometry, geometry_mask);
gimp_dialog_factory_set_has_min_size (GTK_WINDOW (widget), TRUE);
}
/* public functions */