libgimpwidgets: move all GimpPickButton members to a private struct

This commit is contained in:
Michael Natterer 2010-12-29 16:20:00 +01:00
parent aedd3e43de
commit 3d4ef455d2
6 changed files with 59 additions and 21 deletions

View File

@ -157,6 +157,7 @@ libgimpwidgets_sources = \
gimppatheditor.h \
gimppickbutton.c \
gimppickbutton.h \
gimppickbutton-private.h \
gimppreview.c \
gimppreview.h \
gimppreviewarea.c \

View File

@ -36,6 +36,7 @@
#include "gimpicons.h"
#include "gimppickbutton.h"
#include "gimppickbutton-default.h"
#include "gimppickbutton-private.h"
#include "gimpwidgetsutils.h"
#include "cursors/gimp-color-picker-cursors.c"
@ -188,13 +189,13 @@ gimp_pick_button_mouse_release (GtkWidget *invisible,
static void
gimp_pick_button_shutdown (GimpPickButton *button)
{
GdkDisplay *display = gtk_widget_get_display (button->grab_widget);
GdkDisplay *display = gtk_widget_get_display (button->priv->grab_widget);
guint32 timestamp = gtk_get_current_event_time ();
gdk_display_keyboard_ungrab (display, timestamp);
gdk_display_pointer_ungrab (display, timestamp);
gtk_grab_remove (button->grab_widget);
gtk_grab_remove (button->priv->grab_widget);
}
static void
@ -319,22 +320,23 @@ _gimp_pick_button_default_pick (GimpPickButton *button)
GtkWidget *widget;
guint32 timestamp;
if (! button->cursor)
button->cursor = make_cursor (gtk_widget_get_display (GTK_WIDGET (button)));
if (! button->priv->cursor)
button->priv->cursor =
make_cursor (gtk_widget_get_display (GTK_WIDGET (button)));
if (! button->grab_widget)
if (! button->priv->grab_widget)
{
button->grab_widget = gtk_invisible_new ();
button->priv->grab_widget = gtk_invisible_new ();
gtk_widget_add_events (button->grab_widget,
gtk_widget_add_events (button->priv->grab_widget,
GDK_BUTTON_RELEASE_MASK |
GDK_BUTTON_PRESS_MASK |
GDK_POINTER_MOTION_MASK);
gtk_widget_show (button->grab_widget);
gtk_widget_show (button->priv->grab_widget);
}
widget = button->grab_widget;
widget = button->priv->grab_widget;
timestamp = gtk_get_current_event_time ();
if (gdk_keyboard_grab (gtk_widget_get_window (widget), FALSE,
@ -349,7 +351,7 @@ _gimp_pick_button_default_pick (GimpPickButton *button)
GDK_BUTTON_PRESS_MASK |
GDK_POINTER_MOTION_MASK,
NULL,
button->cursor,
button->priv->cursor,
timestamp) != GDK_GRAB_SUCCESS)
{
gdk_display_keyboard_ungrab (gtk_widget_get_display (widget), timestamp);

View File

@ -0,0 +1,27 @@
/* LIBGIMP - The GIMP Library
* Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
*
* gimppickbutton-private.h
*
* 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
* Library 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, see
* <http://www.gnu.org/licenses/>.
*/
#ifndef __GIMP_PICK_BUTTON_PRIVATE_H__
#define __GIMP_PICK_BUTTON_PRIVATE_H__
struct _GimpPickButtonPrivate
{
GdkCursor *cursor;
GtkWidget *grab_widget;
};
#endif /* ! __GIMP_PICK_BUTTON_PRIVATE_H__ */

View File

@ -24,6 +24,7 @@
#include "gimpwidgetstypes.h"
#include "gimppickbutton.h"
#include "gimppickbutton-private.h"
#include "gimppickbutton-quartz.h"
#include "cursors/gimp-color-picker-cursors.c"

View File

@ -32,6 +32,7 @@
#include "gimppickbutton.h"
#include "gimppickbutton-default.h"
#include "gimppickbutton-kwin.h"
#include "gimppickbutton-private.h"
#ifdef GDK_WINDOWING_QUARTZ
#include "gimppickbutton-quartz.h"
@ -56,6 +57,7 @@ enum
LAST_SIGNAL
};
static void gimp_pick_button_dispose (GObject *object);
static void gimp_pick_button_clicked (GtkButton *button);
@ -96,6 +98,8 @@ gimp_pick_button_class_init (GimpPickButtonClass* klass)
button_class->clicked = gimp_pick_button_clicked;
klass->color_picked = NULL;
g_type_class_add_private (object_class, sizeof (GimpPickButtonPrivate));
}
static void
@ -103,6 +107,10 @@ gimp_pick_button_init (GimpPickButton *button)
{
GtkWidget *image;
button->priv = G_TYPE_INSTANCE_GET_PRIVATE (button,
GIMP_TYPE_PICK_BUTTON,
GimpPickButtonPrivate);
image = gtk_image_new_from_icon_name (GIMP_ICON_COLOR_PICK_FROM_SCREEN,
GTK_ICON_SIZE_BUTTON);
gtk_container_add (GTK_CONTAINER (button), image);
@ -119,16 +127,16 @@ gimp_pick_button_dispose (GObject *object)
{
GimpPickButton *button = GIMP_PICK_BUTTON (object);
if (button->cursor)
if (button->priv->cursor)
{
g_object_unref (button->cursor);
button->cursor = NULL;
g_object_unref (button->priv->cursor);
button->priv->cursor = NULL;
}
if (button->grab_widget)
if (button->priv->grab_widget)
{
gtk_widget_destroy (button->grab_widget);
button->grab_widget = NULL;
gtk_widget_destroy (button->priv->grab_widget);
button->priv->grab_widget = NULL;
}
G_OBJECT_CLASS (parent_class)->dispose (object);

View File

@ -34,15 +34,14 @@ G_BEGIN_DECLS
#define GIMP_PICK_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_PICK_BUTTON, GimpPickButtonClass))
typedef struct _GimpPickButtonClass GimpPickButtonClass;
typedef struct _GimpPickButtonPrivate GimpPickButtonPrivate;
typedef struct _GimpPickButtonClass GimpPickButtonClass;
struct _GimpPickButton
{
GtkButton parent_instance;
GtkButton parent_instance;
/*< private >*/
GdkCursor *cursor;
GtkWidget *grab_widget;
GimpPickButtonPrivate *priv;
};
struct _GimpPickButtonClass