159
157
DEFAULT_DOCK_HEIGHT,
160
158
GIMP_PARAM_READABLE));
159
gtk_widget_class_install_style_property (widget_class,
160
g_param_spec_double ("font-scale",
164
DEFAULT_DOCK_FONT_SCALE,
165
GIMP_PARAM_READABLE));
164
169
gimp_dock_init (GimpDock *dock)
166
GtkWidget *separator;
171
static gint dock_ID = 1;
172
GtkWidget *separator;
168
175
dock->context = NULL;
169
176
dock->dialog_factory = NULL;
170
177
dock->dockbooks = NULL;
178
dock->ID = dock_ID++;
180
name = g_strdup_printf ("gimp-dock-%d", dock->ID);
181
gtk_widget_set_name (GTK_WIDGET (dock), name);
172
184
gtk_window_set_role (GTK_WINDOW (dock), "gimp-dock");
173
185
gtk_window_set_resizable (GTK_WINDOW (dock), TRUE);
186
gtk_window_set_focus_on_map (GTK_WINDOW (dock), FALSE);
175
188
dock->main_vbox = gtk_vbox_new (FALSE, 0);
176
189
gtk_container_add (GTK_CONTAINER (dock), dock->main_vbox);
287
gimp_message_dialog_new (_("Close all Tabs?"),
289
widget, GTK_DIALOG_MODAL,
292
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
293
_("Close all Tabs"), GTK_RESPONSE_OK,
297
gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
302
gimp_message_box_set_primary_text (GIMP_MESSAGE_DIALOG (dialog)->box,
303
_("Close all tabs?"));
305
gimp_message_box_set_text (GIMP_MESSAGE_DIALOG (dialog)->box,
306
ngettext ("This window has %d tab open. "
307
"Closing the window will also close "
309
"This window has %d tabs open. "
310
"Closing the window will also close "
311
"all its tabs.", n), n);
313
retval = (gimp_dialog_run (GIMP_DIALOG (dialog)) != GTK_RESPONSE_OK);
315
gtk_widget_destroy (dialog);
302
GimpSessionInfo *info = gimp_session_info_new ();
304
gimp_object_set_name (GIMP_OBJECT (info),
305
gtk_window_get_title (GTK_WINDOW (widget)));
307
info->widget = widget;
308
gimp_session_info_get_info (info);
311
gimp_container_add (global_recent_docks, GIMP_OBJECT (info));
312
g_object_unref (info);
322
gimp_dock_key_press_event (GtkWidget *widget,
325
GtkWindow *window = GTK_WINDOW (widget);
326
GtkWidget *focus = gtk_window_get_focus (window);
327
gboolean handled = FALSE;
329
/* we're overriding the GtkWindow implementation here to give
330
* the focus widget precedence over unmodified accelerators
331
* before the accelerator activation scheme.
334
/* text widgets get all key events first */
335
if (G_UNLIKELY (GTK_IS_EDITABLE (focus) || GTK_IS_TEXT_VIEW (focus)))
336
handled = gtk_window_propagate_key_event (window, event);
338
/* invoke control/alt accelerators */
339
if (! handled && event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK))
340
handled = gtk_window_activate_key (window, event);
342
/* invoke focus widget handlers */
344
handled = gtk_window_propagate_key_event (window, event);
346
/* invoke non-(control/alt) accelerators */
347
if (! handled && ! (event->state & (GDK_CONTROL_MASK | GDK_MOD1_MASK)))
348
handled = gtk_window_activate_key (window, event);
350
/* chain up, bypassing gtk_window_key_press(), to invoke binding set */
352
handled = GTK_WIDGET_CLASS (g_type_class_peek (g_type_parent (GTK_TYPE_WINDOW)))->key_press_event (widget, event);
358
319
gimp_dock_style_set (GtkWidget *widget,
359
320
GtkStyle *prev_style)
363
if (GTK_WIDGET_CLASS (parent_class)->style_set)
364
GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
366
gtk_widget_style_get (widget, "default-height", &default_height, NULL);
325
GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
327
gtk_widget_style_get (widget,
328
"default-height", &default_height,
329
"font-scale", &font_scale,
368
332
gtk_window_set_default_size (GTK_WINDOW (widget), -1, default_height);
334
if (font_scale != 1.0)
336
PangoContext *context;
337
PangoFontDescription *font_desc;
342
context = gtk_widget_get_pango_context (widget);
343
font_desc = pango_context_get_font_description (context);
344
font_desc = pango_font_description_copy (font_desc);
346
font_size = pango_font_description_get_size (font_desc);
347
font_size = font_scale * font_size;
348
pango_font_description_set_size (font_desc, font_size);
350
font_str = pango_font_description_to_string (font_desc);
351
pango_font_description_free (font_desc);
354
g_strdup_printf ("style \"gimp-dock-style\""
356
" font_name = \"%s\""
358
"widget \"gimp-dock-%d.*\" style \"gimp-dock-style\"",
360
GIMP_DOCK (widget)->ID);
363
gtk_rc_parse_string (rc_string);
366
if (gtk_bin_get_child (GTK_BIN (widget)))
367
gtk_widget_reset_rc_styles (gtk_bin_get_child (GTK_BIN (widget)));