diff options
author | Benjamin Otte <otte@redhat.com> | 2010-12-06 17:20:13 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2010-12-06 18:57:11 +0100 |
commit | fc711434bc6c436d996e582e4f0b658eb449acb0 (patch) | |
tree | 3970d535a0b299e21d07ca0af4c8edce03623406 | |
parent | 8f8aeb7dfe396723bdeb24b1e2d6905c4af66d96 (diff) | |
download | gtk+-fc711434bc6c436d996e582e4f0b658eb449acb0.tar.gz |
gtk: Remove old DirectFB code for drawing window decorations
I'm not sure it'd even compile.
-rw-r--r-- | gtk/Makefile.am | 2 | ||||
-rw-r--r-- | gtk/gtkwindow-decorate.c | 808 | ||||
-rw-r--r-- | gtk/gtkwindow-decorate.h | 41 | ||||
-rw-r--r-- | gtk/gtkwindow.c | 18 |
4 files changed, 4 insertions, 865 deletions
diff --git a/gtk/Makefile.am b/gtk/Makefile.am index d95f3de7d6..9fa5059c27 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -428,7 +428,6 @@ gtk_private_h_sources = \ gtktoolpaletteprivate.h \ gtktreedatalist.h \ gtktreeprivate.h \ - gtkwindow-decorate.h \ gtkwidgetprivate.h \ $(gtk_clipboard_dnd_h_sources) \ $(gtk_appchooser_impl_h_sources) @@ -666,7 +665,6 @@ gtk_base_c_sources = \ gtkvseparator.c \ gtkwidget.c \ gtkwidgetpath.c \ - gtkwindow-decorate.c \ gtkwindow.c \ $(gtk_clipboard_dnd_c_sources) \ $(gtk_appchooser_impl_c_sources) diff --git a/gtk/gtkwindow-decorate.c b/gtk/gtkwindow-decorate.c deleted file mode 100644 index d58feb3295..0000000000 --- a/gtk/gtkwindow-decorate.c +++ /dev/null @@ -1,808 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 2001 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Authors: Alexander Larsson <alexl@redhat.com> - */ - -#include "config.h" -#include "gtkprivate.h" -#include "gtkwindow.h" -#include "gtkmain.h" -#include "gtkwindow-decorate.h" -#include "gtkintl.h" - - -#ifdef DECORATE_WINDOWS - -typedef enum -{ - GTK_WINDOW_REGION_TITLE, - GTK_WINDOW_REGION_MAXIMIZE, - GTK_WINDOW_REGION_CLOSE, - GTK_WINDOW_REGION_BR_RESIZE -} GtkWindowRegionType; - -typedef struct _GtkWindowRegion GtkWindowRegion; -typedef struct _GtkWindowDecoration GtkWindowDecoration; - -struct _GtkWindowRegion -{ - GdkRectangle rect; - GtkWindowRegionType type; -}; - -typedef enum -{ - RESIZE_TOP_LEFT, - RESIZE_TOP, - RESIZE_TOP_RIGHT, - RESIZE_RIGHT, - RESIZE_BOTTOM_RIGHT, - RESIZE_BOTTOM, - RESIZE_BOTTOM_LEFT, - RESIZE_LEFT, - RESIZE_NONE, -} GtkWindowResizeType; - -struct _GtkWindowDecoration -{ - gint n_regions; - GtkWindowRegion *regions; - - gint last_x, last_y; - gint last_w, last_h; - - PangoLayout *title_layout; - - GtkWindowResizeType resize; - - guint moving : 1; - guint closing : 1; - guint maximizing : 1; - guint maximized : 1; - guint maximizable : 1; - guint decorated : 1; - guint real_inner_move : 1; - guint focused : 1; -}; - -#define DECORATION_BORDER_TOP 15 -#define DECORATION_BORDER_LEFT 3 -#define DECORATION_BORDER_RIGHT 3 -#define DECORATION_BORDER_BOTTOM 3 -#define DECORATION_BORDER_TOT_X (DECORATION_BORDER_LEFT + DECORATION_BORDER_RIGHT) -#define DECORATION_BORDER_TOT_Y (DECORATION_BORDER_TOP + DECORATION_BORDER_BOTTOM) -#define DECORATION_BUTTON_SIZE 9 -#define DECORATION_BUTTON_Y_OFFSET 2 -#define DECORATION_TITLE_FONT "Sans 9" - -static void gtk_decorated_window_recalculate_regions (GtkWindow *window); -static GtkWindowRegionType gtk_decorated_window_region_type (GtkWindow *window, - gint x, - gint y); -static gint gtk_decorated_window_frame_event (GtkWindow *window, - GdkEvent *event); -static gint gtk_decorated_window_button_press (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_decorated_window_button_release (GtkWidget *widget, - GdkEventButton *event); -static gint gtk_decorated_window_motion_notify (GtkWidget *widget, - GdkEventMotion *event); -static gint gtk_decorated_window_window_state (GtkWidget *widget, - GdkEventWindowState *event); -static void gtk_decorated_window_paint (GtkWidget *widget, - GdkRectangle *area); -static gint gtk_decorated_window_focus_change (GtkWidget *widget, - GdkEventFocus *event); -static void gtk_decorated_window_realize (GtkWindow *window); -static void gtk_decorated_window_unrealize (GtkWindow *window); - -static void -gtk_decoration_free (GtkWindowDecoration *deco) -{ - g_free (deco->regions); - deco->regions = NULL; - deco->n_regions = 0; - - g_free (deco); -} - -void -gtk_decorated_window_init (GtkWindow *window) -{ - GtkWindowDecoration *deco; - - deco = g_new (GtkWindowDecoration, 1); - - deco->n_regions = 0; - deco->regions = NULL; - deco->title_layout = NULL; - deco->resize = RESIZE_NONE; - deco->moving = FALSE; - deco->decorated = TRUE; - deco->closing = FALSE; - deco->maximizing = FALSE; - deco->maximized = FALSE; - deco->maximizable = FALSE; - deco->real_inner_move = FALSE; - - g_object_set_data_full (G_OBJECT (window), I_("gtk-window-decoration"), deco, - (GDestroyNotify) gtk_decoration_free); - - gtk_window_set_has_frame (window, TRUE); - - g_signal_connect (window, - "frame-event", - G_CALLBACK (gtk_decorated_window_frame_event), - window); - g_signal_connect (window, - "focus-in-event", - G_CALLBACK (gtk_decorated_window_focus_change), - window); - g_signal_connect (window, - "focus-out-event", - G_CALLBACK (gtk_decorated_window_focus_change), - window); - g_signal_connect (window, - "realize", - G_CALLBACK (gtk_decorated_window_realize), - window); - g_signal_connect (window, - "unrealize", - G_CALLBACK (gtk_decorated_window_unrealize), - window); -} - -static inline GtkWindowDecoration * -get_decoration (GtkWindow *window) -{ - return (GtkWindowDecoration *)g_object_get_data (G_OBJECT (window), "gtk-window-decoration"); -} - -void -gtk_decorated_window_set_title (GtkWindow *window, - const gchar *title) -{ - GtkWindowDecoration *deco = get_decoration (window); - - if (deco->title_layout) - pango_layout_set_text (deco->title_layout, title, -1); -} - -void -gtk_decorated_window_calculate_frame_size (GtkWindow *window) -{ - GdkWMDecoration decorations; - GtkWindowDecoration *deco = get_decoration (window); - - if (gdk_window_get_decorations (GTK_WIDGET (window)->window, - &decorations)) - { - if ((decorations & GDK_DECOR_BORDER) && - (decorations & GDK_DECOR_TITLE)) - { - deco->decorated = TRUE; - if ((decorations & GDK_DECOR_MAXIMIZE) && - (gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL)) - deco->maximizable = TRUE; - } - else - deco->decorated = FALSE; - } - else - { - deco->decorated = (window->type != GTK_WINDOW_POPUP); - deco->maximizable = (gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL); - } - - if (deco->decorated) - gtk_window_set_frame_dimensions (window, - DECORATION_BORDER_LEFT, - DECORATION_BORDER_TOP, - DECORATION_BORDER_RIGHT, - DECORATION_BORDER_BOTTOM); - else - gtk_window_set_frame_dimensions (window, 0, 0, 0, 0); - - gtk_decorated_window_recalculate_regions (window); -} - -static gboolean -gtk_decorated_window_inner_change (GdkWindow *win, - gint x, gint y, - gint width, gint height, - gpointer user_data) -{ - GtkWindow *window = (GtkWindow *)user_data; - GtkWidget *widget = GTK_WIDGET (window); - GtkWindowDecoration *deco = get_decoration (window); - - if (deco->real_inner_move) - { - deco->real_inner_move = FALSE; - return FALSE; - } - - deco->real_inner_move = TRUE; - gdk_window_move_resize (widget->window, - window->frame_left, window->frame_top, - width, height); - - gdk_window_move_resize (window->frame, - x - window->frame_left, y - window->frame_top, - width + window->frame_left + window->frame_right, - height + window->frame_top + window->frame_bottom); - return TRUE; -} - -static void -gtk_decorated_window_inner_get_pos (GdkWindow *win, - gint *x, gint *y, - gpointer user_data) -{ - GtkWindow *window = (GtkWindow *)user_data; - - gdk_window_get_position (window->frame, x, y); - - *x += window->frame_left; - *y += window->frame_top; -} - -static void -gtk_decorated_window_realize (GtkWindow *window) -{ - GtkWindowDecoration *deco = get_decoration (window); - GtkWidget *widget = GTK_WIDGET (window); - PangoFontDescription *font_desc; - - deco->title_layout = gtk_widget_create_pango_layout (widget, - (window->title)?window->title:""); - - font_desc = pango_font_description_from_string(DECORATION_TITLE_FONT); - pango_layout_set_font_description (deco->title_layout, font_desc); - pango_font_description_free (font_desc); -} - - -static void -gtk_decorated_window_unrealize (GtkWindow *window) -{ - GtkWindowDecoration *deco = get_decoration (window); - - if (deco->title_layout) - { - g_object_unref (deco->title_layout); - deco->title_layout = NULL; - } -} - -static gint -gtk_decorated_window_frame_event (GtkWindow *window, GdkEvent *event) -{ - GtkWindowDecoration *deco = get_decoration (window); - GtkWidget *widget = GTK_WIDGET (window); - GdkEventExpose *expose_event; - - switch (event->type) - { - case GDK_EXPOSE: - expose_event = (GdkEventExpose *)event; - if (deco->decorated) - gtk_decorated_window_paint (widget, &expose_event->area); - return TRUE; - break; - case GDK_CONFIGURE: - gtk_decorated_window_recalculate_regions (window); - break; - case GDK_MOTION_NOTIFY: - return gtk_decorated_window_motion_notify (widget, (GdkEventMotion *)event); - break; - case GDK_BUTTON_PRESS: - return gtk_decorated_window_button_press (widget, (GdkEventButton *)event); - break; - case GDK_BUTTON_RELEASE: - return gtk_decorated_window_button_release (widget, (GdkEventButton *)event); - case GDK_WINDOW_STATE: - return gtk_decorated_window_window_state (widget, (GdkEventWindowState *)event); - default: - break; - } - return FALSE; -} - -static gint -gtk_decorated_window_focus_change (GtkWidget *widget, - GdkEventFocus *event) -{ - GtkWindow *window = GTK_WINDOW(widget); - GtkWindowDecoration *deco = get_decoration (window); - deco->focused = event->in; - gdk_window_invalidate_rect (window->frame, NULL, FALSE); - return FALSE; -} - -static gint -gtk_decorated_window_motion_notify (GtkWidget *widget, - GdkEventMotion *event) -{ - GtkWindow *window; - GtkWindowDecoration *deco; - GdkModifierType mask; - GdkWindow *win; - gint x, y; - gint win_x, win_y, win_w, win_h; - - window = GTK_WINDOW (widget); - deco = get_decoration (window); - - if (!deco->decorated) - return TRUE; - - win = widget->window; - gdk_window_get_pointer (window->frame, &x, &y, &mask); - - gdk_window_get_position (window->frame, &win_x, &win_y); - win_x += DECORATION_BORDER_LEFT; - win_y += DECORATION_BORDER_TOP; - - gdk_window_get_geometry (win, NULL, NULL, &win_w, &win_h); - - if (deco->moving) - { - int dx, dy; - dx = x - deco->last_x; - dy = y - deco->last_y; - - gtk_window_move (window, win_x + dx, win_y + dy); - } - - if (deco->resize != RESIZE_NONE) - { - int w, h; - - w = win_w; - h = win_h; - - switch(deco->resize) { - case RESIZE_BOTTOM_RIGHT: - w = x - DECORATION_BORDER_TOT_X; - h = y - DECORATION_BORDER_TOT_Y; - break; - case RESIZE_RIGHT: - w = x - DECORATION_BORDER_TOT_X; - break; - case RESIZE_BOTTOM: - h = y - DECORATION_BORDER_TOT_Y; - break; - case RESIZE_TOP_LEFT: - case RESIZE_TOP: - case RESIZE_TOP_RIGHT: - case RESIZE_BOTTOM_LEFT: - case RESIZE_LEFT: - default: - g_warning ("Resize mode %d not handled yet.\n", deco->resize); - break; - } - - if ((w > 0) && (h > 0)) - { - _gtk_window_constrain_size (window, w,h, &w, &h); - - if ((w != win_w) || (h != win_h)) - gdk_window_resize (widget->window, w, h); - } - } - - return TRUE; -} - -static GtkWindowRegionType -gtk_decorated_window_region_type (GtkWindow *window, gint x, gint y) -{ - GtkWindowDecoration *deco = get_decoration (window); - int i; - - for (i=0;i<deco->n_regions;i++) - { - if ((x > deco->regions[i].rect.x) && - (x - deco->regions[i].rect.x < deco->regions[i].rect.width) && - (y > deco->regions[i].rect.y) && - (y - deco->regions[i].rect.y < deco->regions[i].rect.height)) - return deco->regions[i].type; - } - return -1; -} - -static gint -gtk_decorated_window_button_press (GtkWidget *widget, - GdkEventButton *event) -{ - GtkWindow *window; - GtkWindowRegionType type; - GtkWindowDecoration *deco; - gint x, y; - - window = GTK_WINDOW (widget); - deco = get_decoration (window); - - if (!deco->decorated) - return TRUE; - - x = event->x; - y = event->y; - - type = gtk_decorated_window_region_type (window, x, y); - - switch (type) - { - case GTK_WINDOW_REGION_TITLE: - if (!deco->maximized && event->state & GDK_BUTTON1_MASK) - { - deco->last_x = x; - deco->last_y = y; - deco->moving = TRUE; - } - break; - case GTK_WINDOW_REGION_MAXIMIZE: - if (event->state & GDK_BUTTON1_MASK) - deco->maximizing = TRUE; - break; - case GTK_WINDOW_REGION_CLOSE: - if (event->state & GDK_BUTTON1_MASK) - deco->closing = TRUE; - break; - case GTK_WINDOW_REGION_BR_RESIZE: - if (!deco->maximized) - { - if (event->state & GDK_BUTTON1_MASK) - deco->resize = RESIZE_BOTTOM_RIGHT; - deco->last_x = x; - deco->last_y = y; - } - break; - default: - break; - } - - return TRUE; -} - -static gint -gtk_decorated_window_button_release (GtkWidget *widget, - GdkEventButton *event) -{ - GtkWindow *window; - GtkWindowRegionType type; - GtkWindowDecoration *deco; - - window = GTK_WINDOW (widget); - deco = get_decoration (window); - - if (deco->closing) - { - type = gtk_decorated_window_region_type (window, event->x, event->y); - if (type == GTK_WINDOW_REGION_CLOSE) - { - GdkEvent *event = gdk_event_new (GDK_DELETE); - - event->any.type = GDK_DELETE; - event->any.window = g_object_ref (widget->window); - event->any.send_event = TRUE; - - gtk_main_do_event (event); - gdk_event_free (event); - } - } - else if (deco->maximizing) - { - type = gtk_decorated_window_region_type (window, event->x, event->y); - if (type == GTK_WINDOW_REGION_MAXIMIZE) - { - if (deco->maximized) - gtk_window_unmaximize (window); - else - gtk_window_maximize (window); - } - } - - deco->closing = FALSE; - deco->maximizing = FALSE; - deco->moving = FALSE; - deco->resize = RESIZE_NONE; - return TRUE; -} - -static gint -gtk_decorated_window_window_state (GtkWidget *widget, - GdkEventWindowState *event) -{ - GtkWindow *window; - GtkWindowDecoration *deco; - GdkWindowObject *priv; - - window = GTK_WINDOW (widget); - deco = get_decoration (window); - priv = GDK_WINDOW_OBJECT (window->frame); - - if (event->changed_mask & GDK_WINDOW_STATE_MAXIMIZED) - { - if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED) - { - int w, h; - gdk_window_get_geometry (widget->window, NULL, NULL, - &deco->last_w, &deco->last_h); - gdk_window_get_origin (widget->window, &deco->last_x, &deco->last_y); - w = gdk_screen_get_width(gdk_screen_get_default()) - DECORATION_BORDER_TOT_X; - h = gdk_screen_get_height(gdk_screen_get_default()) - DECORATION_BORDER_TOT_Y; - _gtk_window_constrain_size (window, w, h, &w, &h); - if (w != deco->last_w || h != deco->last_h) - { - gtk_window_move (window, DECORATION_BORDER_LEFT, DECORATION_BORDER_TOP); - gdk_window_resize (widget->window, w, h); - deco->maximized = TRUE; - } - } - else - { - gtk_window_move (window, deco->last_x, deco->last_y); - _gtk_window_constrain_size (window, deco->last_w, deco->last_h, - &deco->last_w, &deco->last_h); - gdk_window_resize (widget->window, deco->last_w, deco->last_h); - deco->maximized = FALSE; - } - } - return TRUE; -} - -static void -gtk_decorated_window_paint (GtkWidget *widget, - GdkRectangle *area) -{ - GtkWindow *window = GTK_WINDOW (widget); - GtkWindowDecoration *deco = get_decoration (window); - gint x1, y1, x2, y2; - GtkStateType border_state; - cairo_t *cr; - - if (deco->decorated) - { - GdkWindow *frame; - gint width, height; - - frame = window->frame; - gdk_drawable_get_size (frame, &width, &height); - - /* Top */ - gtk_paint_flat_box (widget->style, frame, GTK_STATE_NORMAL, - GTK_SHADOW_NONE, area, widget, "base", - 0, 0, - width, DECORATION_BORDER_TOP); - /* Bottom */ - gtk_paint_flat_box (widget->style, frame, GTK_STATE_NORMAL, - GTK_SHADOW_NONE, area, widget, "base", - 0, height - DECORATION_BORDER_BOTTOM, - width, DECORATION_BORDER_BOTTOM); - /* Left */ - gtk_paint_flat_box (widget->style, frame, GTK_STATE_NORMAL, - GTK_SHADOW_NONE, area, widget, "base", - 0, DECORATION_BORDER_TOP, - DECORATION_BORDER_LEFT, height - DECORATION_BORDER_TOT_Y); - /* Right */ - gtk_paint_flat_box (widget->style, frame, GTK_STATE_NORMAL, - GTK_SHADOW_NONE, area, widget, "base", - width - DECORATION_BORDER_RIGHT, DECORATION_BORDER_TOP, - DECORATION_BORDER_RIGHT, height - DECORATION_BORDER_TOT_Y); - - /* Border: */ - if (deco->focused) - border_state = GTK_STATE_SELECTED; - else - border_state = GTK_STATE_PRELIGHT; - - gtk_paint_box (widget->style, frame, border_state, - GTK_SHADOW_OUT, area, widget, "base", - 0, 0, width, height); - - gtk_paint_box (widget->style, frame, border_state, - GTK_SHADOW_IN, area, widget, "base", - DECORATION_BORDER_LEFT - 2, DECORATION_BORDER_TOP - 2, - width - (DECORATION_BORDER_LEFT + DECORATION_BORDER_RIGHT) + 3, - height - (DECORATION_BORDER_TOP + DECORATION_BORDER_BOTTOM) + 3); - - cr = gdk_cairo_create (frame); - cairo_set_line_width (cr, 1.0); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE); - - if (area) - { - gdk_cairo_rectangle (cr, &area); - cairo_clip (cr); - } - - if (deco->maximizable) - { - /* Maximize button: */ - - x1 = width - (DECORATION_BORDER_LEFT * 2) - (DECORATION_BUTTON_SIZE * 2); - y1 = DECORATION_BUTTON_Y_OFFSET; - x2 = x1 + DECORATION_BUTTON_SIZE; - y2 = y1 + DECORATION_BUTTON_SIZE; - - gdk_cairo_set_source_color (cr, &widget->style->bg[widget->state]); - cairo_rectangle (cr, x1, y1, x2 - x1, y2 - y1); - cairo_fill (cr); - - gdk_cairo_set_source_rgb (cr, 0, 0, 0); - cairo_rectangle (cr, x1 + 1, y1 + 1, x2 - x1 - 3, 1); - cairo_move_to (cr, x1 + 1.5, y1 + 1.5); - cairo_line_to (cr, x2 - 1.5, y1 + 1.5); - cairo_rectangle (cr, x1 + 1.5, y1 + 2.5, DECORATION_BUTTON_SIZE - 3, DECORATION_BUTTON_SIZE - 4); - cairo_stroke (cr); - } - - /* Close button: */ - - x1 = width - DECORATION_BORDER_LEFT - DECORATION_BUTTON_SIZE; - y1 = DECORATION_BUTTON_Y_OFFSET; - x2 = width - DECORATION_BORDER_LEFT; - y2 = DECORATION_BUTTON_Y_OFFSET + DECORATION_BUTTON_SIZE; - - gdk_cairo_set_source_color (cr, &widget->style->bg[widget->state]); - cairo_rectangle (cr, x1, y1, x2 - x1, y2 - y1); - cairo_fill (cr); - - /* draw an X */ - cairo_move_to (cr, x1 + 0.5, y1 + 0.5); - cairo_line_to (cr, x2 - 0.5, y2 - 0.5); - cairo_move_to (cr, x1 + 0.5, y2 - 0.5); - cairo_line_to (cr, x2 - 0.5, y1 + 0.5); - cairo_stroke (cr); - - /* Title */ - if (deco->title_layout) - { - gdk_cairo_set_source_color (cr, widget->style->fg [border_state]); - pango_cairo_show_layout (cr, deco->title_layout); - } - - cairo_destroy (cr); - } -} - - -static void -gtk_decorated_window_recalculate_regions (GtkWindow *window) -{ - gint n_regions; - gint width, height; - GtkWindowRegion *region; - GtkWindowDecoration *deco = get_decoration (window); - - n_regions = 0; - - if (!deco->decorated) - return; - - n_regions += 2; /* close, Title */ - if (deco->maximizable) - n_regions += 1; - if (gtk_window_get_resizable (window)) - n_regions += 2; - - if (deco->n_regions != n_regions) - { - g_free (deco->regions); - deco->regions = g_new (GtkWindowRegion, n_regions); - deco->n_regions = n_regions; - } - - width = GTK_WIDGET (window)->allocation.width + DECORATION_BORDER_TOT_X; - height = GTK_WIDGET (window)->allocation.height + DECORATION_BORDER_TOT_Y; - - region = deco->regions; - - /* Maximize button */ - if (deco->maximizable) - { - region->rect.x = width - (DECORATION_BORDER_LEFT * 2) - (DECORATION_BUTTON_SIZE * 2); - region->rect.y = DECORATION_BUTTON_Y_OFFSET; - region->rect.width = DECORATION_BUTTON_SIZE; - region->rect.height = DECORATION_BUTTON_SIZE; - region->type = GTK_WINDOW_REGION_MAXIMIZE; - region++; - } - - /* Close button */ - region->rect.x = width - DECORATION_BORDER_LEFT - DECORATION_BUTTON_SIZE; - region->rect.y = DECORATION_BUTTON_Y_OFFSET; - region->rect.width = DECORATION_BUTTON_SIZE; - region->rect.height = DECORATION_BUTTON_SIZE; - region->type = GTK_WINDOW_REGION_CLOSE; - region++; - - /* title bar */ - region->rect.x = 0; - region->rect.y = 0; - region->rect.width = width; - region->rect.height = DECORATION_BORDER_TOP; - region->type = GTK_WINDOW_REGION_TITLE; - region++; - - if (gtk_window_get_resizable (window)) - { - region->rect.x = width - (DECORATION_BORDER_RIGHT + 10); - region->rect.y = height - DECORATION_BORDER_BOTTOM; - region->rect.width = DECORATION_BORDER_RIGHT + 10; - region->rect.height = DECORATION_BORDER_BOTTOM; - region->type = GTK_WINDOW_REGION_BR_RESIZE; - region++; - - region->rect.x = width - DECORATION_BORDER_RIGHT; - region->rect.y = height - (DECORATION_BORDER_BOTTOM + 10); - region->rect.width = DECORATION_BORDER_RIGHT; - region->rect.height = DECORATION_BORDER_BOTTOM + 10; - region->type = GTK_WINDOW_REGION_BR_RESIZE; - region++; - } -} - -void -gtk_decorated_window_move_resize_window (GtkWindow *window, - gint x, - gint y, - gint width, - gint height) -{ - GtkWidget *widget = GTK_WIDGET (window); - GtkWindowDecoration *deco = get_decoration (window); - - deco->real_inner_move = TRUE; - gdk_window_move_resize (widget->window, - x, y, width, height); -} -#else - -void -gtk_decorated_window_init (GtkWindow *window) -{ -} - -void -gtk_decorated_window_calculate_frame_size (GtkWindow *window) -{ -} - -void -gtk_decorated_window_set_title (GtkWindow *window, - const gchar *title) -{ -} - -void -gtk_decorated_window_move_resize_window (GtkWindow *window, - gint x, - gint y, - gint width, - gint height) -{ - gdk_window_move_resize (gtk_widget_get_window (GTK_WIDGET (window)), - x, y, width, height); -} -#endif diff --git a/gtk/gtkwindow-decorate.h b/gtk/gtkwindow-decorate.h deleted file mode 100644 index 9f182f457b..0000000000 --- a/gtk/gtkwindow-decorate.h +++ /dev/null @@ -1,41 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 2001 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Authors: Alexander Larsson <alexl@redhat.com> - */ - -#ifndef __GTK_WINDOW_DECORATE_H__ -#define __GTK_WINDOW_DECORATE_H__ - -G_BEGIN_DECLS - -void gtk_decorated_window_init (GtkWindow *window); -void gtk_decorated_window_calculate_frame_size (GtkWindow *window); -void gtk_decorated_window_set_title (GtkWindow *window, - const gchar *title); -void gtk_decorated_window_move_resize_window (GtkWindow *window, - gint x, - gint y, - gint width, - gint height); - -G_END_DECLS - -#endif /* __GTK_WINDOW_DECORATE_H__ */ diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 31f46a56cd..b42f68dc87 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -37,7 +37,6 @@ #include "gtkprivate.h" #include "gtkrc.h" #include "gtkwindow.h" -#include "gtkwindow-decorate.h" #include "gtkbindings.h" #include "gtkkeyhash.h" #include "gtkmain.h" @@ -1135,8 +1134,6 @@ gtk_window_init (GtkWindow *window) priv->has_user_ref_count = TRUE; toplevel_list = g_slist_prepend (toplevel_list, window); - gtk_decorated_window_init (window); - g_signal_connect (priv->screen, "composited-changed", G_CALLBACK (gtk_window_on_composited_changed), window); } @@ -1584,8 +1581,6 @@ gtk_window_set_title (GtkWindow *window, { gdk_window_set_title (gtk_widget_get_window (widget), priv->title); - - gtk_decorated_window_set_title (window, title); } g_object_notify (G_OBJECT (window), "title"); @@ -4671,11 +4666,6 @@ gtk_window_show (GtkWidget *widget) was_realized = TRUE; } - /* Must be done after the windows are realized, - * so that the decorations can be read - */ - gtk_decorated_window_calculate_frame_size (window); - /* We only send configure request if we didn't just finish * creating the window; if we just created the window * then we created it with widget->allocation anyhow. @@ -7583,10 +7573,10 @@ gtk_window_set_frame_dimensions (GtkWindow *window, width = allocation.width + left + right; height = allocation.height + top + bottom; gdk_window_resize (priv->frame, width, height); - gtk_decorated_window_move_resize_window (window, - left, top, - allocation.width, - allocation.height); + gdk_window_move_resize (gtk_widget_get_window (GTK_WIDGET (window)), + left, top, + allocation.width, + allocation.height); } } |