Compare commits
18 Commits
wip/mir-gd
...
wip/mir-as
Author | SHA1 | Date | |
---|---|---|---|
|
d76bba5cb4 | ||
|
99d849412b | ||
|
60e185e496 | ||
|
6e9db05601 | ||
|
45cfb405c0 | ||
|
d51c9e0337 | ||
|
46b6c2f024 | ||
|
048bbb0e6d | ||
|
17fce05123 | ||
|
7197758600 | ||
|
955c798ab1 | ||
|
cd8576ec19 | ||
|
d31896bdba | ||
|
0fac139057 | ||
|
9b83858d9a | ||
|
56133a1feb | ||
|
17f48e3a9e | ||
|
7543e7b279 |
@@ -24,6 +24,7 @@
|
||||
#include "gdkdisplay.h"
|
||||
#include "gdkscreen.h"
|
||||
#include "gdkdevicemanager.h"
|
||||
#include "gdkglcontextprivate.h"
|
||||
#include "gdkkeys.h"
|
||||
#include "gdkwindowimpl.h"
|
||||
|
||||
@@ -37,6 +38,27 @@ typedef struct _GdkMirEventSource GdkMirEventSource;
|
||||
|
||||
GType gdk_mir_window_impl_get_type (void);
|
||||
|
||||
|
||||
struct _GdkMirGLContext
|
||||
{
|
||||
GdkGLContext parent_instance;
|
||||
|
||||
EGLContext egl_context;
|
||||
EGLConfig egl_config;
|
||||
gboolean is_attached;
|
||||
};
|
||||
|
||||
struct _GdkMirGLContextClass
|
||||
{
|
||||
GdkGLContextClass parent_class;
|
||||
};
|
||||
|
||||
typedef struct _GdkMirGLContext GdkMirGLContext;
|
||||
typedef struct _GdkMirGLContextClass GdkMirGLContextClass;
|
||||
|
||||
#define GDK_MIR_GL_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_MIR_GL_CONTEXT, GdkMirGLContext))
|
||||
|
||||
|
||||
GdkDisplay *_gdk_mir_display_open (const gchar *display_name);
|
||||
|
||||
GdkScreen *_gdk_mir_screen_new (GdkDisplay *display);
|
||||
@@ -59,7 +81,7 @@ GdkCursor *_gdk_mir_cursor_new_for_name (GdkDisplay *display, const gchar *name)
|
||||
|
||||
const gchar *_gdk_mir_cursor_get_name (GdkCursor *cursor);
|
||||
|
||||
GdkWindowImpl *_gdk_mir_window_impl_new (void);
|
||||
GdkWindowImpl *_gdk_mir_window_impl_new (GdkWindow *window);
|
||||
|
||||
void _gdk_mir_window_impl_set_surface_state (GdkMirWindowImpl *impl, MirSurfaceState state);
|
||||
|
||||
@@ -93,16 +115,10 @@ gboolean _gdk_mir_display_have_egl_swap_buffers_with_damage (GdkDisplay *display
|
||||
|
||||
gboolean _gdk_mir_display_have_egl_surfaceless_context (GdkDisplay *display);
|
||||
|
||||
gboolean _gdk_mir_display_make_gl_context_current (GdkDisplay *display, GdkGLContext *context);
|
||||
|
||||
EGLSurface _gdk_mir_window_get_egl_surface (GdkWindow *window, EGLConfig config);
|
||||
|
||||
EGLSurface _gdk_mir_window_get_dummy_egl_surface (GdkWindow *window, EGLConfig config);
|
||||
|
||||
GdkGLContext *_gdk_mir_window_create_gl_context (GdkWindow *window, gboolean attach, GdkGLProfile profile, GdkGLContext *share, GError **error);
|
||||
|
||||
void _gdk_mir_window_invalidate_for_new_frame (GdkWindow *window, cairo_region_t *update_area);
|
||||
|
||||
void _gdk_mir_print_modifiers (unsigned int modifiers);
|
||||
|
||||
void _gdk_mir_print_key_event (const MirKeyEvent *event);
|
||||
|
@@ -404,7 +404,7 @@ gdk_mir_display_create_window_impl (GdkDisplay *display,
|
||||
g_printerr ("\n");
|
||||
if (attributes->wclass != GDK_INPUT_OUTPUT)
|
||||
return;
|
||||
window->impl = _gdk_mir_window_impl_new ();
|
||||
window->impl = _gdk_mir_window_impl_new (window);
|
||||
}
|
||||
|
||||
static GdkKeymap *
|
||||
@@ -602,6 +602,47 @@ _gdk_mir_display_init_egl_display (GdkDisplay *display)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gdk_mir_display_make_gl_context_current (GdkDisplay *display,
|
||||
GdkGLContext *context)
|
||||
{
|
||||
EGLDisplay egl_display = _gdk_mir_display_get_egl_display (display);
|
||||
GdkMirGLContext *mir_context;
|
||||
GdkWindow *window;
|
||||
EGLSurface egl_surface;
|
||||
|
||||
if (context == NULL)
|
||||
{
|
||||
eglMakeCurrent(egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
mir_context = GDK_MIR_GL_CONTEXT (context);
|
||||
window = gdk_gl_context_get_window (context);
|
||||
|
||||
if (mir_context->is_attached)
|
||||
{
|
||||
egl_surface = _gdk_mir_window_get_egl_surface (window,
|
||||
mir_context->egl_config);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_gdk_mir_display_have_egl_surfaceless_context (display))
|
||||
egl_surface = EGL_NO_SURFACE;
|
||||
else
|
||||
egl_surface = _gdk_mir_window_get_dummy_egl_surface (window,
|
||||
mir_context->egl_config);
|
||||
}
|
||||
|
||||
if (!eglMakeCurrent (egl_display, egl_surface, egl_surface, mir_context->egl_context))
|
||||
{
|
||||
g_warning ("eglMakeCurrent failed");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
EGLDisplay _gdk_mir_display_get_egl_display (GdkDisplay *display)
|
||||
{
|
||||
return GDK_MIR_DISPLAY (display)->egl_display;
|
||||
@@ -614,12 +655,14 @@ gboolean _gdk_mir_display_have_egl_khr_create_context (GdkDisplay *display)
|
||||
|
||||
gboolean _gdk_mir_display_have_egl_buffer_age (GdkDisplay *display)
|
||||
{
|
||||
return GDK_MIR_DISPLAY (display)->have_egl_buffer_age;
|
||||
/* FIXME: this is not really supported by mir yet (despite is advertised) */
|
||||
// return GDK_MIR_DISPLAY (display)->have_egl_buffer_age;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean _gdk_mir_display_have_egl_swap_buffers_with_damage (GdkDisplay *display)
|
||||
{
|
||||
/* FIXME: this seems to cause rendering problems, at least with radeon */
|
||||
/* FIXME: this is not really supported by mir yet (despite is advertised) */
|
||||
// return GDK_MIR_DISPLAY (display)->have_egl_swap_buffers_with_damage;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -688,5 +731,5 @@ gdk_mir_display_class_init (GdkMirDisplayClass *klass)
|
||||
display_class->convert_selection = gdk_mir_display_convert_selection;
|
||||
display_class->text_property_to_utf8_list = gdk_mir_display_text_property_to_utf8_list;
|
||||
display_class->utf8_to_string_target = gdk_mir_display_utf8_to_string_target;
|
||||
display_class->make_gl_context_current = _gdk_mir_display_make_gl_context_current;
|
||||
display_class->make_gl_context_current = gdk_mir_display_make_gl_context_current;
|
||||
}
|
||||
|
@@ -22,93 +22,10 @@
|
||||
|
||||
#include "gdkmir-private.h"
|
||||
#include "gdkinternals.h"
|
||||
#include "gdkglcontextprivate.h"
|
||||
#include "gdkintl.h"
|
||||
|
||||
#define GDK_MIR_GL_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GDK_TYPE_MIR_GL_CONTEXT, GdkMirGLContext))
|
||||
|
||||
struct _GdkMirGLContext
|
||||
{
|
||||
GdkGLContext parent_instance;
|
||||
|
||||
EGLContext egl_context;
|
||||
EGLConfig egl_config;
|
||||
gboolean is_attached;
|
||||
};
|
||||
|
||||
struct _GdkMirGLContextClass
|
||||
{
|
||||
GdkGLContextClass parent_class;
|
||||
};
|
||||
|
||||
typedef struct _GdkMirGLContext GdkMirGLContext;
|
||||
typedef struct _GdkMirGLContextClass GdkMirGLContextClass;
|
||||
|
||||
G_DEFINE_TYPE (GdkMirGLContext, gdk_mir_gl_context, GDK_TYPE_GL_CONTEXT)
|
||||
|
||||
static void gdk_mir_gl_context_dispose (GObject *gobject);
|
||||
|
||||
void
|
||||
_gdk_mir_window_invalidate_for_new_frame (GdkWindow *window,
|
||||
cairo_region_t *update_area)
|
||||
{
|
||||
cairo_rectangle_int_t window_rect;
|
||||
GdkDisplay *display = gdk_window_get_display (window);
|
||||
GdkMirGLContext *context_mir;
|
||||
int buffer_age;
|
||||
gboolean invalidate_all;
|
||||
EGLSurface egl_surface;
|
||||
|
||||
/* Minimal update is ok if we're not drawing with gl */
|
||||
if (window->gl_paint_context == NULL)
|
||||
return;
|
||||
|
||||
context_mir = GDK_MIR_GL_CONTEXT (window->gl_paint_context);
|
||||
buffer_age = 0;
|
||||
|
||||
egl_surface = _gdk_mir_window_get_egl_surface (window, context_mir->egl_config);
|
||||
|
||||
if (_gdk_mir_display_have_egl_buffer_age (display))
|
||||
{
|
||||
gdk_gl_context_make_current (window->gl_paint_context);
|
||||
eglQuerySurface (_gdk_mir_display_get_egl_display (display), egl_surface,
|
||||
EGL_BUFFER_AGE_EXT, &buffer_age);
|
||||
}
|
||||
|
||||
invalidate_all = FALSE;
|
||||
if (buffer_age == 0 || buffer_age >= 4)
|
||||
invalidate_all = TRUE;
|
||||
else
|
||||
{
|
||||
if (buffer_age >= 2)
|
||||
{
|
||||
if (window->old_updated_area[0])
|
||||
cairo_region_union (update_area, window->old_updated_area[0]);
|
||||
else
|
||||
invalidate_all = TRUE;
|
||||
}
|
||||
if (buffer_age >= 3)
|
||||
{
|
||||
if (window->old_updated_area[1])
|
||||
cairo_region_union (update_area, window->old_updated_area[1]);
|
||||
else
|
||||
invalidate_all = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (invalidate_all)
|
||||
{
|
||||
window_rect.x = 0;
|
||||
window_rect.y = 0;
|
||||
window_rect.width = gdk_window_get_width (window);
|
||||
window_rect.height = gdk_window_get_height (window);
|
||||
|
||||
/* If nothing else is known, repaint everything so that the back
|
||||
buffer is fully up-to-date for the swapbuffer */
|
||||
cairo_region_union_rectangle (update_area, &window_rect);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_mir_gl_context_update (GdkGLContext *context)
|
||||
{
|
||||
@@ -167,170 +84,6 @@ gdk_mir_gl_context_end_frame (GdkGLContext *context,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_mir_gl_context_class_init (GdkMirGLContextClass *klass)
|
||||
{
|
||||
GdkGLContextClass *context_class = GDK_GL_CONTEXT_CLASS (klass);
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
context_class->update = gdk_mir_gl_context_update;
|
||||
context_class->end_frame = gdk_mir_gl_context_end_frame;
|
||||
gobject_class->dispose = gdk_mir_gl_context_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_mir_gl_context_init (GdkMirGLContext *self)
|
||||
{
|
||||
}
|
||||
|
||||
#define MAX_EGL_ATTRS 30
|
||||
|
||||
static gboolean
|
||||
find_eglconfig_for_window (GdkWindow *window,
|
||||
EGLConfig *egl_config_out,
|
||||
GError **error)
|
||||
{
|
||||
GdkDisplay *display = gdk_window_get_display (window);
|
||||
EGLDisplay *egl_display = _gdk_mir_display_get_egl_display (display);
|
||||
GdkVisual *visual = gdk_window_get_visual (window);
|
||||
EGLint attrs[MAX_EGL_ATTRS];
|
||||
EGLint count;
|
||||
EGLConfig *configs;
|
||||
gboolean use_rgba;
|
||||
|
||||
int i = 0;
|
||||
|
||||
attrs[i++] = EGL_SURFACE_TYPE;
|
||||
attrs[i++] = EGL_WINDOW_BIT;
|
||||
|
||||
attrs[i++] = EGL_COLOR_BUFFER_TYPE;
|
||||
attrs[i++] = EGL_RGB_BUFFER;
|
||||
|
||||
attrs[i++] = EGL_RED_SIZE;
|
||||
attrs[i++] = 1;
|
||||
attrs[i++] = EGL_GREEN_SIZE;
|
||||
attrs[i++] = 1;
|
||||
attrs[i++] = EGL_BLUE_SIZE;
|
||||
attrs[i++] = 1;
|
||||
|
||||
use_rgba = (visual == gdk_screen_get_rgba_visual (gdk_display_get_default_screen (display)));
|
||||
|
||||
if (use_rgba)
|
||||
{
|
||||
attrs[i++] = EGL_ALPHA_SIZE;
|
||||
attrs[i++] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
attrs[i++] = EGL_ALPHA_SIZE;
|
||||
attrs[i++] = 0;
|
||||
}
|
||||
|
||||
attrs[i++] = EGL_NONE;
|
||||
g_assert (i < MAX_EGL_ATTRS);
|
||||
|
||||
if (!eglChooseConfig (egl_display, attrs, NULL, 0, &count) || count < 1)
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_UNSUPPORTED_FORMAT,
|
||||
_("No available configurations for the given pixel format"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
configs = g_new (EGLConfig, count);
|
||||
|
||||
if (!eglChooseConfig (egl_display, attrs, configs, count, &count) || count < 1)
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_UNSUPPORTED_FORMAT,
|
||||
_("No available configurations for the given pixel format"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Pick first valid configuration i guess? */
|
||||
|
||||
if (egl_config_out != NULL)
|
||||
*egl_config_out = configs[0];
|
||||
|
||||
g_free (configs);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
GdkGLContext *
|
||||
_gdk_mir_window_create_gl_context (GdkWindow *window,
|
||||
gboolean attached,
|
||||
GdkGLProfile profile,
|
||||
GdkGLContext *share,
|
||||
GError **error)
|
||||
{
|
||||
GdkDisplay *display = gdk_window_get_display (window);
|
||||
GdkMirGLContext *context;
|
||||
EGLContext ctx;
|
||||
EGLConfig config;
|
||||
int i;
|
||||
EGLint context_attribs[3];
|
||||
|
||||
if (!_gdk_mir_display_init_egl_display (display))
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_NOT_AVAILABLE,
|
||||
_("No GL implementation is available"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (profile == GDK_GL_PROFILE_DEFAULT)
|
||||
profile = GDK_GL_PROFILE_LEGACY;
|
||||
|
||||
if (profile == GDK_GL_PROFILE_3_2_CORE &&
|
||||
!_gdk_mir_display_have_egl_khr_create_context (display))
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_UNSUPPORTED_PROFILE,
|
||||
_("3.2 core GL profile is not available on EGL implementation"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!find_eglconfig_for_window (window, &config, error))
|
||||
return NULL;
|
||||
|
||||
i = 0;
|
||||
if (profile == GDK_GL_PROFILE_3_2_CORE)
|
||||
{
|
||||
context_attribs[i++] = EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR;
|
||||
context_attribs[i++] = EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR;
|
||||
}
|
||||
context_attribs[i++] = EGL_NONE;
|
||||
|
||||
ctx = eglCreateContext (_gdk_mir_display_get_egl_display (display),
|
||||
config,
|
||||
share ? GDK_MIR_GL_CONTEXT (share)->egl_context : EGL_NO_CONTEXT,
|
||||
context_attribs);
|
||||
if (ctx == NULL)
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_NOT_AVAILABLE,
|
||||
_("Unable to create a GL context"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GDK_NOTE (OPENGL,
|
||||
g_print ("Created EGL context[%p]\n", ctx));
|
||||
|
||||
context = g_object_new (GDK_TYPE_MIR_GL_CONTEXT,
|
||||
"display", display,
|
||||
"window", window,
|
||||
"profile", profile,
|
||||
"shared-context", share,
|
||||
NULL);
|
||||
|
||||
context->egl_config = config;
|
||||
context->egl_context = ctx;
|
||||
context->is_attached = attached;
|
||||
|
||||
return GDK_GL_CONTEXT (context);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_mir_gl_context_dispose (GObject *gobject)
|
||||
{
|
||||
@@ -355,43 +108,18 @@ gdk_mir_gl_context_dispose (GObject *gobject)
|
||||
G_OBJECT_CLASS (gdk_mir_gl_context_parent_class)->dispose (gobject);
|
||||
}
|
||||
|
||||
gboolean
|
||||
_gdk_mir_display_make_gl_context_current (GdkDisplay *display,
|
||||
GdkGLContext *context)
|
||||
static void
|
||||
gdk_mir_gl_context_class_init (GdkMirGLContextClass *klass)
|
||||
{
|
||||
EGLDisplay egl_display = _gdk_mir_display_get_egl_display (display);
|
||||
GdkMirGLContext *mir_context;
|
||||
GdkWindow *window;
|
||||
EGLSurface egl_surface;
|
||||
GdkGLContextClass *context_class = GDK_GL_CONTEXT_CLASS (klass);
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
if (context == NULL)
|
||||
{
|
||||
eglMakeCurrent(egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
mir_context = GDK_MIR_GL_CONTEXT (context);
|
||||
window = gdk_gl_context_get_window (context);
|
||||
|
||||
if (mir_context->is_attached)
|
||||
{
|
||||
egl_surface = _gdk_mir_window_get_egl_surface (window,
|
||||
mir_context->egl_config);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_gdk_mir_display_have_egl_surfaceless_context (display))
|
||||
egl_surface = EGL_NO_SURFACE;
|
||||
else
|
||||
egl_surface = _gdk_mir_window_get_dummy_egl_surface (window,
|
||||
mir_context->egl_config);
|
||||
}
|
||||
|
||||
if (!eglMakeCurrent (egl_display, egl_surface, egl_surface, mir_context->egl_context))
|
||||
{
|
||||
g_warning ("eglMakeCurrent failed");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
context_class->update = gdk_mir_gl_context_update;
|
||||
context_class->end_frame = gdk_mir_gl_context_end_frame;
|
||||
gobject_class->dispose = gdk_mir_gl_context_dispose;
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_mir_gl_context_init (GdkMirGLContext *self)
|
||||
{
|
||||
}
|
||||
|
@@ -257,7 +257,7 @@ gdk_mir_screen_get_root_window (GdkScreen *screen)
|
||||
get_screen_size (GDK_MIR_SCREEN (screen)->display_config, &width, &height);
|
||||
|
||||
s->root_window = _gdk_display_create_window (s->display);
|
||||
s->root_window->impl = _gdk_mir_window_impl_new ();
|
||||
s->root_window->impl = _gdk_mir_window_impl_new (s->root_window);
|
||||
s->root_window->impl_window = s->root_window;
|
||||
s->root_window->visual = s->visual;
|
||||
s->root_window->window_type = GDK_WINDOW_ROOT;
|
||||
|
@@ -25,13 +25,17 @@
|
||||
|
||||
#include "gdkwindowimpl.h"
|
||||
#include "gdkinternals.h"
|
||||
#include "gdkintl.h"
|
||||
#include "gdkdisplayprivate.h"
|
||||
#include "gdkdeviceprivate.h"
|
||||
#include "gdkframeclockprivate.h"
|
||||
|
||||
#define GDK_MIR_WINDOW_IMPL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_WINDOW_IMPL_MIR, GdkMirWindowImplClass))
|
||||
#define GDK_IS_WINDOW_IMPL_MIR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_WINDOW_IMPL_MIR))
|
||||
#define GDK_MIR_WINDOW_IMPL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_WINDOW_IMPL_MIR, GdkMirWindowImplClass))
|
||||
|
||||
#define MAX_EGL_ATTRS 30
|
||||
|
||||
typedef struct _GdkMirWindowImplClass GdkMirWindowImplClass;
|
||||
|
||||
struct _GdkMirWindowImpl
|
||||
@@ -76,6 +80,9 @@ struct _GdkMirWindowImpl
|
||||
|
||||
/* TRUE if cursor is inside this window */
|
||||
gboolean cursor_inside;
|
||||
|
||||
gboolean pending_commit;
|
||||
gboolean pending_swap;
|
||||
};
|
||||
|
||||
struct _GdkMirWindowImplClass
|
||||
@@ -86,10 +93,16 @@ struct _GdkMirWindowImplClass
|
||||
G_DEFINE_TYPE (GdkMirWindowImpl, gdk_mir_window_impl, GDK_TYPE_WINDOW_IMPL)
|
||||
|
||||
static cairo_surface_t *gdk_mir_window_impl_ref_cairo_surface (GdkWindow *window);
|
||||
static void on_frame_clock_after_paint (GdkFrameClock *clock, GdkWindow *window);
|
||||
|
||||
GdkWindowImpl *
|
||||
_gdk_mir_window_impl_new (void)
|
||||
_gdk_mir_window_impl_new (GdkWindow *window)
|
||||
{
|
||||
GdkFrameClock *frame_clock = gdk_window_get_frame_clock (window);
|
||||
|
||||
g_signal_connect (frame_clock, "after-paint",
|
||||
G_CALLBACK (on_frame_clock_after_paint), window);
|
||||
|
||||
return g_object_new (GDK_TYPE_MIR_WINDOW_IMPL, NULL);
|
||||
}
|
||||
|
||||
@@ -271,6 +284,9 @@ ensure_no_surface (GdkWindow *window)
|
||||
g_clear_pointer (&impl->dummy_surface, mir_surface_release_sync);
|
||||
}
|
||||
|
||||
impl->pending_commit = FALSE;
|
||||
impl->pending_swap = FALSE;
|
||||
|
||||
g_clear_pointer(&impl->surface, mir_surface_release_sync);
|
||||
}
|
||||
|
||||
@@ -286,10 +302,43 @@ redraw_transient (GdkWindow *window)
|
||||
}
|
||||
|
||||
static void
|
||||
send_buffer (GdkWindow *window)
|
||||
on_swap_buffer_completed (MirSurface *surface, void *data)
|
||||
{
|
||||
GdkWindow *window = data;
|
||||
GdkMirWindowImpl *impl = GDK_MIR_WINDOW_IMPL (window->impl);
|
||||
|
||||
/* The Cairo context is no longer valid */
|
||||
g_clear_pointer (&impl->cairo_surface, cairo_surface_destroy);
|
||||
impl->pending_swap = FALSE;
|
||||
|
||||
_gdk_frame_clock_thaw (gdk_window_get_frame_clock (window));
|
||||
}
|
||||
|
||||
static void
|
||||
on_frame_clock_after_paint (GdkFrameClock *clock,
|
||||
GdkWindow *window)
|
||||
{
|
||||
GdkMirWindowImpl *impl = GDK_MIR_WINDOW_IMPL (window->impl);
|
||||
|
||||
if (!impl->pending_commit)
|
||||
return;
|
||||
|
||||
impl->pending_commit = FALSE;
|
||||
_gdk_frame_clock_freeze (clock);
|
||||
|
||||
/* Send the completed buffer to Mir */
|
||||
impl->pending_swap = TRUE;
|
||||
mir_surface_swap_buffers (impl->surface, on_swap_buffer_completed, window);
|
||||
}
|
||||
|
||||
static void
|
||||
send_buffer_delayed (GdkWindow *window)
|
||||
{
|
||||
GdkMirWindowImpl *impl = GDK_MIR_WINDOW_IMPL (window->impl);
|
||||
|
||||
if (impl->pending_swap || impl->pending_commit)
|
||||
return;
|
||||
|
||||
/* Transient windows draw onto parent instead */
|
||||
if (impl->transient_for)
|
||||
{
|
||||
@@ -325,11 +374,15 @@ send_buffer (GdkWindow *window)
|
||||
cairo_surface_destroy (surface);
|
||||
}
|
||||
|
||||
/* Send the completed buffer to Mir */
|
||||
mir_surface_swap_buffers_sync (impl->surface);
|
||||
impl->pending_commit = TRUE;
|
||||
}
|
||||
|
||||
/* The Cairo context is no longer valid */
|
||||
g_clear_pointer (&impl->cairo_surface, cairo_surface_destroy);
|
||||
static void
|
||||
send_buffer (GdkWindow *window)
|
||||
{
|
||||
send_buffer_delayed (window);
|
||||
gdk_frame_clock_request_phase (gdk_window_get_frame_clock (window),
|
||||
GDK_FRAME_CLOCK_PHASE_AFTER_PAINT);
|
||||
}
|
||||
|
||||
static cairo_surface_t *
|
||||
@@ -666,8 +719,8 @@ gdk_mir_window_impl_begin_paint_region (GdkWindow *window,
|
||||
const cairo_region_t *region)
|
||||
{
|
||||
//g_printerr ("gdk_mir_window_impl_begin_paint_region window=%p\n", window);
|
||||
/* Indicate we are ready to be drawn onto directly? */
|
||||
return FALSE;
|
||||
/* Indicate we are ready to be drawn right now */
|
||||
return GDK_MIR_WINDOW_IMPL (window->impl)->pending_swap;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -677,7 +730,7 @@ gdk_mir_window_impl_end_paint (GdkWindow *window)
|
||||
|
||||
//g_printerr ("gdk_mir_window_impl_end_paint window=%p\n", window);
|
||||
if (impl->visible && !window->current_paint.use_gl)
|
||||
send_buffer (window);
|
||||
send_buffer_delayed (window);
|
||||
}
|
||||
|
||||
static cairo_region_t *
|
||||
@@ -1255,6 +1308,213 @@ gdk_mir_window_impl_set_shadow_width (GdkWindow *window,
|
||||
g_printerr ("gdk_mir_window_impl_set_shadow_width window=%p\n", window);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
find_eglconfig_for_window (GdkWindow *window,
|
||||
EGLConfig *egl_config_out,
|
||||
GError **error)
|
||||
{
|
||||
GdkDisplay *display = gdk_window_get_display (window);
|
||||
EGLDisplay *egl_display = _gdk_mir_display_get_egl_display (display);
|
||||
GdkVisual *visual = gdk_window_get_visual (window);
|
||||
EGLint attrs[MAX_EGL_ATTRS];
|
||||
EGLint count;
|
||||
EGLConfig *configs;
|
||||
gboolean use_rgba;
|
||||
|
||||
int i = 0;
|
||||
|
||||
attrs[i++] = EGL_SURFACE_TYPE;
|
||||
attrs[i++] = EGL_WINDOW_BIT;
|
||||
|
||||
attrs[i++] = EGL_COLOR_BUFFER_TYPE;
|
||||
attrs[i++] = EGL_RGB_BUFFER;
|
||||
|
||||
attrs[i++] = EGL_RED_SIZE;
|
||||
attrs[i++] = 1;
|
||||
attrs[i++] = EGL_GREEN_SIZE;
|
||||
attrs[i++] = 1;
|
||||
attrs[i++] = EGL_BLUE_SIZE;
|
||||
attrs[i++] = 1;
|
||||
|
||||
use_rgba = (visual == gdk_screen_get_rgba_visual (gdk_display_get_default_screen (display)));
|
||||
|
||||
if (use_rgba)
|
||||
{
|
||||
attrs[i++] = EGL_ALPHA_SIZE;
|
||||
attrs[i++] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
attrs[i++] = EGL_ALPHA_SIZE;
|
||||
attrs[i++] = 0;
|
||||
}
|
||||
|
||||
attrs[i++] = EGL_NONE;
|
||||
g_assert (i < MAX_EGL_ATTRS);
|
||||
|
||||
if (!eglChooseConfig (egl_display, attrs, NULL, 0, &count) || count < 1)
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_UNSUPPORTED_FORMAT,
|
||||
_("No available configurations for the given pixel format"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
configs = g_new (EGLConfig, count);
|
||||
|
||||
if (!eglChooseConfig (egl_display, attrs, configs, count, &count) || count < 1)
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_UNSUPPORTED_FORMAT,
|
||||
_("No available configurations for the given pixel format"));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Pick first valid configuration i guess? */
|
||||
|
||||
if (egl_config_out != NULL)
|
||||
*egl_config_out = configs[0];
|
||||
|
||||
g_free (configs);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static GdkGLContext *
|
||||
gdk_mir_window_impl_create_gl_context (GdkWindow *window,
|
||||
gboolean attached,
|
||||
GdkGLProfile profile,
|
||||
GdkGLContext *share,
|
||||
GError **error)
|
||||
{
|
||||
GdkDisplay *display = gdk_window_get_display (window);
|
||||
GdkMirGLContext *context;
|
||||
EGLContext ctx;
|
||||
EGLConfig config;
|
||||
int i;
|
||||
EGLint context_attribs[3];
|
||||
|
||||
if (!_gdk_mir_display_init_egl_display (display))
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_NOT_AVAILABLE,
|
||||
_("No GL implementation is available"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (profile == GDK_GL_PROFILE_DEFAULT)
|
||||
profile = GDK_GL_PROFILE_LEGACY;
|
||||
|
||||
if (profile == GDK_GL_PROFILE_3_2_CORE &&
|
||||
!_gdk_mir_display_have_egl_khr_create_context (display))
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_UNSUPPORTED_PROFILE,
|
||||
_("3.2 core GL profile is not available on EGL implementation"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!find_eglconfig_for_window (window, &config, error))
|
||||
return NULL;
|
||||
|
||||
i = 0;
|
||||
if (profile == GDK_GL_PROFILE_3_2_CORE)
|
||||
{
|
||||
context_attribs[i++] = EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR;
|
||||
context_attribs[i++] = EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR;
|
||||
}
|
||||
context_attribs[i++] = EGL_NONE;
|
||||
|
||||
ctx = eglCreateContext (_gdk_mir_display_get_egl_display (display),
|
||||
config,
|
||||
share ? GDK_MIR_GL_CONTEXT (share)->egl_context : EGL_NO_CONTEXT,
|
||||
context_attribs);
|
||||
if (ctx == NULL)
|
||||
{
|
||||
g_set_error_literal (error, GDK_GL_ERROR,
|
||||
GDK_GL_ERROR_NOT_AVAILABLE,
|
||||
_("Unable to create a GL context"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
GDK_NOTE (OPENGL,
|
||||
g_print ("Created EGL context[%p]\n", ctx));
|
||||
|
||||
context = g_object_new (GDK_TYPE_MIR_GL_CONTEXT,
|
||||
"display", display,
|
||||
"window", window,
|
||||
"profile", profile,
|
||||
"shared-context", share,
|
||||
NULL);
|
||||
|
||||
context->egl_config = config;
|
||||
context->egl_context = ctx;
|
||||
context->is_attached = attached;
|
||||
|
||||
return GDK_GL_CONTEXT (context);
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_mir_window_impl_invalidate_for_new_frame (GdkWindow *window,
|
||||
cairo_region_t *update_area)
|
||||
{
|
||||
cairo_rectangle_int_t window_rect;
|
||||
GdkDisplay *display = gdk_window_get_display (window);
|
||||
GdkMirGLContext *context_mir;
|
||||
int buffer_age;
|
||||
gboolean invalidate_all;
|
||||
EGLSurface egl_surface;
|
||||
|
||||
/* Minimal update is ok if we're not drawing with gl */
|
||||
if (window->gl_paint_context == NULL)
|
||||
return;
|
||||
|
||||
context_mir = GDK_MIR_GL_CONTEXT (window->gl_paint_context);
|
||||
buffer_age = 0;
|
||||
|
||||
egl_surface = _gdk_mir_window_get_egl_surface (window, context_mir->egl_config);
|
||||
|
||||
if (_gdk_mir_display_have_egl_buffer_age (display))
|
||||
{
|
||||
gdk_gl_context_make_current (window->gl_paint_context);
|
||||
eglQuerySurface (_gdk_mir_display_get_egl_display (display), egl_surface,
|
||||
EGL_BUFFER_AGE_EXT, &buffer_age);
|
||||
}
|
||||
|
||||
invalidate_all = FALSE;
|
||||
if (buffer_age == 0 || buffer_age >= 4)
|
||||
invalidate_all = TRUE;
|
||||
else
|
||||
{
|
||||
if (buffer_age >= 2)
|
||||
{
|
||||
if (window->old_updated_area[0])
|
||||
cairo_region_union (update_area, window->old_updated_area[0]);
|
||||
else
|
||||
invalidate_all = TRUE;
|
||||
}
|
||||
if (buffer_age >= 3)
|
||||
{
|
||||
if (window->old_updated_area[1])
|
||||
cairo_region_union (update_area, window->old_updated_area[1]);
|
||||
else
|
||||
invalidate_all = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (invalidate_all)
|
||||
{
|
||||
window_rect.x = 0;
|
||||
window_rect.y = 0;
|
||||
window_rect.width = gdk_window_get_width (window);
|
||||
window_rect.height = gdk_window_get_height (window);
|
||||
|
||||
/* If nothing else is known, repaint everything so that the back
|
||||
buffer is fully up-to-date for the swapbuffer */
|
||||
cairo_region_union_rectangle (update_area, &window_rect);
|
||||
}
|
||||
}
|
||||
|
||||
EGLSurface
|
||||
_gdk_mir_window_get_egl_surface (GdkWindow *window,
|
||||
EGLConfig config)
|
||||
@@ -1409,6 +1669,6 @@ gdk_mir_window_impl_class_init (GdkMirWindowImplClass *klass)
|
||||
impl_class->get_scale_factor = gdk_mir_window_impl_get_scale_factor;
|
||||
impl_class->set_opaque_region = gdk_mir_window_impl_set_opaque_region;
|
||||
impl_class->set_shadow_width = gdk_mir_window_impl_set_shadow_width;
|
||||
impl_class->create_gl_context = _gdk_mir_window_create_gl_context;
|
||||
impl_class->invalidate_for_new_frame = _gdk_mir_window_invalidate_for_new_frame;
|
||||
impl_class->create_gl_context = gdk_mir_window_impl_create_gl_context;
|
||||
impl_class->invalidate_for_new_frame = gdk_mir_window_impl_invalidate_for_new_frame;
|
||||
}
|
||||
|
@@ -1840,7 +1840,7 @@ gtk_dialog_buildable_custom_finished (GtkBuildable *buildable,
|
||||
else
|
||||
signal_id = GTK_WIDGET_GET_CLASS (object)->activate_signal;
|
||||
|
||||
if (signal_id)
|
||||
if (signal_id && !is_action)
|
||||
{
|
||||
GClosure *closure;
|
||||
|
||||
|
@@ -205,7 +205,7 @@ update_visibility (GtkModelButton *button)
|
||||
has_icon = gtk_image_get_storage_type (GTK_IMAGE (button->image)) != GTK_IMAGE_EMPTY;
|
||||
has_text = gtk_label_get_text (GTK_LABEL (button->label))[0] != '\0';
|
||||
|
||||
gtk_widget_set_visible (button->image, has_icon);
|
||||
gtk_widget_set_visible (button->image, has_icon && (button->iconic || !has_text));
|
||||
gtk_widget_set_visible (button->label, has_text && (!button->iconic || !has_icon));
|
||||
}
|
||||
|
||||
|
@@ -103,11 +103,24 @@ struct _GtkPopoverMenu
|
||||
};
|
||||
|
||||
enum {
|
||||
CHILD_PROP_SUBMENU = 1
|
||||
PROP_VISIBLE_SUBMENU = 1
|
||||
};
|
||||
|
||||
enum {
|
||||
CHILD_PROP_SUBMENU = 1,
|
||||
CHILD_PROP_POSITION
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (GtkPopoverMenu, gtk_popover_menu, GTK_TYPE_POPOVER)
|
||||
|
||||
static void
|
||||
visible_submenu_changed (GObject *object,
|
||||
GParamSpec *pspec,
|
||||
GtkPopoverMenu *popover)
|
||||
{
|
||||
g_object_notify (G_OBJECT (popover), "visible-submenu");
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_popover_menu_init (GtkPopoverMenu *popover)
|
||||
{
|
||||
@@ -118,6 +131,8 @@ gtk_popover_menu_init (GtkPopoverMenu *popover)
|
||||
gtk_stack_set_transition_type (GTK_STACK (stack), GTK_STACK_TRANSITION_TYPE_SLIDE_LEFT_RIGHT);
|
||||
gtk_widget_show (stack);
|
||||
gtk_container_add (GTK_CONTAINER (popover), stack);
|
||||
g_signal_connect (stack, "notify::visible-child-name",
|
||||
G_CALLBACK (visible_submenu_changed), popover);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -205,7 +220,6 @@ gtk_popover_menu_get_child_property (GtkContainer *container,
|
||||
return;
|
||||
|
||||
switch (property_id)
|
||||
|
||||
{
|
||||
case CHILD_PROP_SUBMENU:
|
||||
{
|
||||
@@ -215,6 +229,14 @@ gtk_popover_menu_get_child_property (GtkContainer *container,
|
||||
}
|
||||
break;
|
||||
|
||||
case CHILD_PROP_POSITION:
|
||||
{
|
||||
gint position;
|
||||
gtk_container_child_get (GTK_CONTAINER (stack), child, "position", &position, NULL);
|
||||
g_value_set_int (value, position);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec);
|
||||
break;
|
||||
@@ -245,17 +267,73 @@ gtk_popover_menu_set_child_property (GtkContainer *container,
|
||||
}
|
||||
break;
|
||||
|
||||
case CHILD_PROP_POSITION:
|
||||
{
|
||||
gint position;
|
||||
position = g_value_get_int (value);
|
||||
gtk_container_child_set (GTK_CONTAINER (stack), child, "position", position, NULL);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
GTK_CONTAINER_WARN_INVALID_CHILD_PROPERTY_ID (container, property_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_popover_menu_get_property (GObject *object,
|
||||
guint property_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkWidget *stack;
|
||||
|
||||
stack = gtk_bin_get_child (GTK_BIN (object));
|
||||
|
||||
switch (property_id)
|
||||
{
|
||||
case PROP_VISIBLE_SUBMENU:
|
||||
g_value_set_string (value, gtk_stack_get_visible_child_name (GTK_STACK (stack)));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_popover_menu_set_property (GObject *object,
|
||||
guint property_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GtkWidget *stack;
|
||||
|
||||
stack = gtk_bin_get_child (GTK_BIN (object));
|
||||
|
||||
switch (property_id)
|
||||
{
|
||||
case PROP_VISIBLE_SUBMENU:
|
||||
gtk_stack_set_visible_child_name (GTK_STACK (stack), g_value_get_string (value));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_popover_menu_class_init (GtkPopoverMenuClass *klass)
|
||||
{
|
||||
GtkContainerClass *container_class = GTK_CONTAINER_CLASS (klass);
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
object_class->set_property = gtk_popover_menu_set_property;
|
||||
object_class->get_property = gtk_popover_menu_get_property;
|
||||
|
||||
widget_class->map = gtk_popover_menu_map;
|
||||
widget_class->unmap = gtk_popover_menu_unmap;
|
||||
@@ -266,6 +344,14 @@ gtk_popover_menu_class_init (GtkPopoverMenuClass *klass)
|
||||
container_class->set_child_property = gtk_popover_menu_set_child_property;
|
||||
container_class->get_child_property = gtk_popover_menu_get_child_property;
|
||||
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_VISIBLE_SUBMENU,
|
||||
g_param_spec_string ("visible-submenu",
|
||||
P_("Visible submenu"),
|
||||
P_("The name of the visible submenu"),
|
||||
NULL,
|
||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||
|
||||
/**
|
||||
* GtkPopoverMenu:submenu:
|
||||
*
|
||||
@@ -282,6 +368,14 @@ gtk_popover_menu_class_init (GtkPopoverMenuClass *klass)
|
||||
P_("The name of the submenu"),
|
||||
NULL,
|
||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||
|
||||
gtk_container_class_install_child_property (container_class,
|
||||
CHILD_PROP_POSITION,
|
||||
g_param_spec_int ("position",
|
||||
P_("Position"),
|
||||
P_("The index of the child in the parent"),
|
||||
-1, G_MAXINT, 0,
|
||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -650,6 +650,8 @@ gtk_stack_set_child_property (GtkContainer *container,
|
||||
for (l = priv->children; l != NULL; l = l->next)
|
||||
{
|
||||
info2 = l->data;
|
||||
if (info == info2)
|
||||
continue;
|
||||
if (g_strcmp0 (info2->name, name) == 0)
|
||||
{
|
||||
g_warning ("Duplicate child name in GtkStack: %s\n", name);
|
||||
|
@@ -1566,7 +1566,7 @@ column-header.button.dnd { // for treeview-like derive widgets
|
||||
|
||||
.popover {
|
||||
padding: 2px;
|
||||
border: 1px solid $borders-color;
|
||||
border: 1px solid $borders_color;
|
||||
border-radius: 5px;
|
||||
background-color: mix($bg_color, $base_color, 50%);
|
||||
|
||||
|
@@ -18,8 +18,8 @@ msgstr ""
|
||||
"Project-Id-Version: gtk+-properties.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gtk"
|
||||
"%2b&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2014-11-13 10:02+0000\n"
|
||||
"PO-Revision-Date: 2014-11-13 12:41+0100\n"
|
||||
"POT-Creation-Date: 2014-11-19 10:02+0000\n"
|
||||
"PO-Revision-Date: 2014-11-19 12:57+0100\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
|
||||
"Language: \n"
|
||||
@@ -120,7 +120,6 @@ msgid "The default display for GDK"
|
||||
msgstr "El visor predeterminado para GDK"
|
||||
|
||||
#: ../gdk/gdkglcontext.c:244
|
||||
#| msgid "The GDK visual used by the GL context"
|
||||
msgid "The GDK display the context is from"
|
||||
msgstr "El contexto del que proviene la visualización GDK"
|
||||
|
||||
@@ -137,7 +136,6 @@ msgid "Profile"
|
||||
msgstr "Perfil"
|
||||
|
||||
#: ../gdk/gdkglcontext.c:276
|
||||
#| msgid "The Cell Area this context was created for"
|
||||
msgid "The GL profile the context was created for"
|
||||
msgstr "El perfil GL para el que fue creado el contexto"
|
||||
|
||||
@@ -146,7 +144,6 @@ msgid "Shared context"
|
||||
msgstr "Contexto compartido"
|
||||
|
||||
#: ../gdk/gdkglcontext.c:293
|
||||
#| msgid "The Cell Area this context was created for"
|
||||
msgid "The GL context this context share data with"
|
||||
msgstr "El contexto GL con el que este contexto comparte datos"
|
||||
|
||||
@@ -1331,13 +1328,14 @@ msgstr ""
|
||||
"inicio o el final del padre"
|
||||
|
||||
#: ../gtk/gtkactionbar.c:257 ../gtk/gtkbox.c:336 ../gtk/gtkheaderbar.c:1849
|
||||
#: ../gtk/gtknotebook.c:774 ../gtk/gtkpaned.c:337 ../gtk/gtkpopover.c:1319
|
||||
#: ../gtk/gtkstack.c:471 ../gtk/gtktoolitemgroup.c:1674
|
||||
#: ../gtk/gtknotebook.c:774 ../gtk/gtkpaned.c:337 ../gtk/gtkpopover.c:1314
|
||||
#: ../gtk/gtkpopovermenu.c:365 ../gtk/gtkstack.c:471
|
||||
#: ../gtk/gtktoolitemgroup.c:1674
|
||||
msgid "Position"
|
||||
msgstr "Posición"
|
||||
|
||||
#: ../gtk/gtkactionbar.c:258 ../gtk/gtkbox.c:337 ../gtk/gtkheaderbar.c:1850
|
||||
#: ../gtk/gtknotebook.c:775 ../gtk/gtkstack.c:472
|
||||
#: ../gtk/gtknotebook.c:775 ../gtk/gtkpopovermenu.c:366 ../gtk/gtkstack.c:472
|
||||
msgid "The index of the child in the parent"
|
||||
msgstr "El índice del hijo en el padre"
|
||||
|
||||
@@ -4173,7 +4171,6 @@ msgid "The GL context"
|
||||
msgstr "El contexto GL"
|
||||
|
||||
#: ../gtk/gtkglarea.c:741
|
||||
#| msgid "The GDK visual used by the GL context"
|
||||
msgid "The GL profile to use for the GL context"
|
||||
msgstr "El perfil GL que usar para el contexto GL"
|
||||
|
||||
@@ -4182,7 +4179,6 @@ msgid "Auto render"
|
||||
msgstr "Renderizado automático"
|
||||
|
||||
#: ../gtk/gtkglarea.c:764
|
||||
#| msgid "Whether the column can be reordered around the headers"
|
||||
msgid "Whether the gl area renders on each redraw"
|
||||
msgstr "Indica si el área GL se renderiza en cada redibujado"
|
||||
|
||||
@@ -4203,12 +4199,10 @@ msgid "Whether a depth buffer is allocated"
|
||||
msgstr "Indica si se ha reservado un búfer de profundidad"
|
||||
|
||||
#: ../gtk/gtkglarea.c:812
|
||||
#| msgid "Has depth buffer"
|
||||
msgid "Has stencil buffer"
|
||||
msgstr "Tiene un búfer de plantilla"
|
||||
|
||||
#: ../gtk/gtkglarea.c:813
|
||||
#| msgid "Whether a depth buffer is allocated"
|
||||
msgid "Whether a stencil buffer is allocated"
|
||||
msgstr "Indica si se ha reservado un búfer de plantilla"
|
||||
|
||||
@@ -5023,7 +5017,7 @@ msgstr ""
|
||||
"Establece si el elemento del menú aparece justificado en la parte derecha de "
|
||||
"una barra de menú"
|
||||
|
||||
#: ../gtk/gtkmenuitem.c:412 ../gtk/gtkpopovermenu.c:264
|
||||
#: ../gtk/gtkmenuitem.c:412 ../gtk/gtkpopovermenu.c:357
|
||||
msgid "Submenu"
|
||||
msgstr "Submenú"
|
||||
|
||||
@@ -5150,12 +5144,10 @@ msgid "Menu name"
|
||||
msgstr "Nombre del menú"
|
||||
|
||||
#: ../gtk/gtkmodelbutton.c:911
|
||||
#| msgid "The name of the selected font"
|
||||
msgid "The name of the menu to open"
|
||||
msgstr "El nombre del menú que abrir"
|
||||
|
||||
#: ../gtk/gtkmodelbutton.c:927
|
||||
#| msgid "Whether the menu has a tearoff item"
|
||||
msgid "Whether the menu is a parent"
|
||||
msgstr "Indica si el menú es padre"
|
||||
|
||||
@@ -5164,7 +5156,6 @@ msgid "Centered"
|
||||
msgstr "Centrado"
|
||||
|
||||
#: ../gtk/gtkmodelbutton.c:942
|
||||
#| msgid "Whether to wrap the license text."
|
||||
msgid "Whether to center the contents"
|
||||
msgstr "Indica si se debe centrar el contenido"
|
||||
|
||||
@@ -5173,7 +5164,6 @@ msgid "Iconic"
|
||||
msgstr "Icónico"
|
||||
|
||||
#: ../gtk/gtkmodelbutton.c:958
|
||||
#| msgid "Whether to wrap the license text."
|
||||
msgid "Whether to prefer the icon over text"
|
||||
msgstr "Indica si se prefiere el icono sobre el texto"
|
||||
|
||||
@@ -5420,12 +5410,10 @@ msgid "Largest possible value for the \"position\" property"
|
||||
msgstr "El valor más grande posible para la propiedad \"posicion\""
|
||||
|
||||
#: ../gtk/gtkpaned.c:396
|
||||
#| msgid "Width of handle"
|
||||
msgid "Wide Handle"
|
||||
msgstr "Tirador ancho"
|
||||
|
||||
#: ../gtk/gtkpaned.c:397
|
||||
#| msgid "Whether the window frame should have a close button"
|
||||
msgid "Whether the paned should have a prominent handle"
|
||||
msgstr "Indica si el panel debe tener un tirador prominente"
|
||||
|
||||
@@ -5521,35 +5509,45 @@ msgstr "Ventana del socket"
|
||||
msgid "The window of the socket the plug is embedded in"
|
||||
msgstr "La ventana del socket en la que el enchufe está empotrado"
|
||||
|
||||
#: ../gtk/gtkpopover.c:1291
|
||||
#: ../gtk/gtkpopover.c:1286
|
||||
msgid "Relative to"
|
||||
msgstr "Relativo a"
|
||||
|
||||
#: ../gtk/gtkpopover.c:1292
|
||||
#: ../gtk/gtkpopover.c:1287
|
||||
msgid "Widget the bubble window points to"
|
||||
msgstr "Widget al que apunta la ventana de burbuja"
|
||||
|
||||
#: ../gtk/gtkpopover.c:1305
|
||||
#: ../gtk/gtkpopover.c:1300
|
||||
msgid "Pointing to"
|
||||
msgstr "Apuntando a"
|
||||
|
||||
#: ../gtk/gtkpopover.c:1306
|
||||
#: ../gtk/gtkpopover.c:1301
|
||||
msgid "Rectangle the bubble window points to"
|
||||
msgstr "Rectángulo al que la ventana de burbuja apunta"
|
||||
|
||||
#: ../gtk/gtkpopover.c:1320
|
||||
#: ../gtk/gtkpopover.c:1315
|
||||
msgid "Position to place the bubble window"
|
||||
msgstr "Posición en la que colocar la ventana de burbuja"
|
||||
|
||||
#: ../gtk/gtkpopover.c:1335 ../gtk/gtkwindow.c:753
|
||||
#: ../gtk/gtkpopover.c:1330 ../gtk/gtkwindow.c:753
|
||||
msgid "Modal"
|
||||
msgstr "Modal"
|
||||
|
||||
#: ../gtk/gtkpopover.c:1336
|
||||
#: ../gtk/gtkpopover.c:1331
|
||||
msgid "Whether the popover is modal"
|
||||
msgstr "Indica si la ventana emergente es modal"
|
||||
|
||||
#: ../gtk/gtkpopovermenu.c:265
|
||||
#: ../gtk/gtkpopovermenu.c:340
|
||||
#| msgid "Visible Focus"
|
||||
msgid "Visible submenu"
|
||||
msgstr "Submenú visible"
|
||||
|
||||
#: ../gtk/gtkpopovermenu.c:341
|
||||
#| msgid "The name of the submenu"
|
||||
msgid "The name of the visible submenu"
|
||||
msgstr "El nombre del submenú visible"
|
||||
|
||||
#: ../gtk/gtkpopovermenu.c:358
|
||||
msgid "The name of the submenu"
|
||||
msgstr "El nombre del submenú"
|
||||
|
||||
@@ -6457,12 +6455,10 @@ msgid "Kinetic scrolling mode."
|
||||
msgstr "Modo de desplazamiento de Kinetic"
|
||||
|
||||
#: ../gtk/gtkscrolledwindow.c:572
|
||||
#| msgid "Kinetic Scrolling"
|
||||
msgid "Overlay Scrolling"
|
||||
msgstr "Superposición del desplazamiento"
|
||||
|
||||
#: ../gtk/gtkscrolledwindow.c:573
|
||||
#| msgid "Kinetic scrolling mode."
|
||||
msgid "Overlay scrolling mode"
|
||||
msgstr "Modo de superposición del desplazamiento"
|
||||
|
||||
@@ -7344,22 +7340,18 @@ msgid "Homogeneous sizing"
|
||||
msgstr "Tamaño homogéneo"
|
||||
|
||||
#: ../gtk/gtkstack.c:410
|
||||
#| msgid "Horizontal options"
|
||||
msgid "Horizontally homogeneous"
|
||||
msgstr "Homogéneo horizontalmente"
|
||||
|
||||
#: ../gtk/gtkstack.c:410
|
||||
#| msgid "Homogeneous sizing"
|
||||
msgid "Horizontally homogeneous sizing"
|
||||
msgstr "Tamaño horizontal homogéneo"
|
||||
|
||||
#: ../gtk/gtkstack.c:422
|
||||
#| msgid "Vertical options"
|
||||
msgid "Vertically homogeneous"
|
||||
msgstr "Homogéneo verticalmente"
|
||||
|
||||
#: ../gtk/gtkstack.c:422
|
||||
#| msgid "Homogeneous sizing"
|
||||
msgid "Vertically homogeneous sizing"
|
||||
msgstr "Tamaño vertical homogéneo"
|
||||
|
||||
|
5711
po-properties/nb.po
5711
po-properties/nb.po
File diff suppressed because it is too large
Load Diff
220
po/nb.po
220
po/nb.po
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gtk+ 3.16.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-11-13 20:54+0100\n"
|
||||
"PO-Revision-Date: 2014-11-13 21:13+0100\n"
|
||||
"POT-Creation-Date: 2014-11-19 19:31+0100\n"
|
||||
"PO-Revision-Date: 2014-11-19 19:42+0100\n"
|
||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||
"Language: no\n"
|
||||
@@ -82,7 +82,7 @@ msgstr "Feilsøkingsflagg som skal fjernes for GDK"
|
||||
|
||||
#: ../gdk/gdkwindow.c:2733
|
||||
msgid "GL support disabled via GDK_DEBUG"
|
||||
msgstr ""
|
||||
msgstr "GL-støtte slått av via GDK_DEBUG"
|
||||
|
||||
#.
|
||||
#. * Translators, the strings in the “keyboard label” context are
|
||||
@@ -495,7 +495,7 @@ msgstr[1] "Åpner %d oppføringer"
|
||||
#: ../gdk/x11/gdkglcontext-x11.c:728
|
||||
#, c-format
|
||||
msgid "No available configurations for the given RGBA pixel format"
|
||||
msgstr ""
|
||||
msgstr "Ingen tilgjengelige konfigurasjoner for oppgitt RGBA-pikselformat"
|
||||
|
||||
#: ../gdk/x11/gdkglcontext-x11.c:1063
|
||||
msgid ""
|
||||
@@ -1183,7 +1183,10 @@ msgstr "_Lagre fargen her"
|
||||
msgid ""
|
||||
"Click this palette entry to make it the current color. To change this entry, "
|
||||
"drag a color swatch here or right-click it and select “Save color here.”"
|
||||
msgstr "Klikk på denne palettoppføringen for å bruke den som aktiv farge. For å endre denne oppføringen drar du en fargeprøve hit eller høyreklikk den og velg «Lagre farge her.»"
|
||||
msgstr ""
|
||||
"Klikk på denne palettoppføringen for å bruke den som aktiv farge. For å "
|
||||
"endre denne oppføringen drar du en fargeprøve hit eller høyreklikk den og "
|
||||
"velg «Lagre farge her.»"
|
||||
|
||||
#: ../gtk/deprecated/gtkcolorseldialog.c:191
|
||||
#: ../gtk/deprecated/gtkfontsel.c:1689 ../gtk/gtkfilechooserbutton.c:794
|
||||
@@ -1383,7 +1386,7 @@ msgstr "Tom"
|
||||
|
||||
#: ../gtk/encodesymbolic.c:38
|
||||
msgid "Output to this directory instead of cwd"
|
||||
msgstr ""
|
||||
msgstr "Skriv til denne katalogen i stedet for aktiv katalog"
|
||||
|
||||
#: ../gtk/encodesymbolic.c:266
|
||||
#, c-format
|
||||
@@ -1681,7 +1684,7 @@ msgstr "Ugyldig egenskap: %s.%s på linje %d"
|
||||
#: ../gtk/gtkbuilderparser.c:775
|
||||
#, c-format
|
||||
msgid "Invalid signal '%s' for type '%s' on line %d"
|
||||
msgstr ""
|
||||
msgstr "Ugyldig signal «%s» for type «%s» på linje %d"
|
||||
|
||||
#: ../gtk/gtkbuilderparser.c:1067
|
||||
#, c-format
|
||||
@@ -1800,7 +1803,7 @@ msgstr "Ny hurtigtast …"
|
||||
#, c-format
|
||||
msgctxt "progress bar label"
|
||||
msgid "%d %%"
|
||||
msgstr ""
|
||||
msgstr "%d %%"
|
||||
|
||||
#: ../gtk/gtkcolorbutton.c:183 ../gtk/gtkcolorbutton.c:383
|
||||
msgid "Pick a Color"
|
||||
@@ -2101,18 +2104,18 @@ msgstr "Høy_re:"
|
||||
msgid "Paper Margins"
|
||||
msgstr "Papirmarger"
|
||||
|
||||
#: ../gtk/gtkentry.c:9589 ../gtk/gtkentry.c:9744 ../gtk/gtklabel.c:6586
|
||||
#: ../gtk/gtktextview.c:8868 ../gtk/gtktextview.c:9058
|
||||
#: ../gtk/gtkentry.c:9589 ../gtk/gtkentry.c:9742 ../gtk/gtklabel.c:6586
|
||||
#: ../gtk/gtktextview.c:8868 ../gtk/gtktextview.c:9056
|
||||
msgid "Cu_t"
|
||||
msgstr "Klipp u_t"
|
||||
|
||||
#: ../gtk/gtkentry.c:9593 ../gtk/gtkentry.c:9747 ../gtk/gtklabel.c:6587
|
||||
#: ../gtk/gtktextview.c:8872 ../gtk/gtktextview.c:9062
|
||||
#: ../gtk/gtkentry.c:9593 ../gtk/gtkentry.c:9745 ../gtk/gtklabel.c:6587
|
||||
#: ../gtk/gtktextview.c:8872 ../gtk/gtktextview.c:9060
|
||||
msgid "_Copy"
|
||||
msgstr "_Kopier"
|
||||
|
||||
#: ../gtk/gtkentry.c:9597 ../gtk/gtkentry.c:9750 ../gtk/gtklabel.c:6588
|
||||
#: ../gtk/gtktextview.c:8874 ../gtk/gtktextview.c:9064
|
||||
#: ../gtk/gtkentry.c:9597 ../gtk/gtkentry.c:9748 ../gtk/gtklabel.c:6588
|
||||
#: ../gtk/gtktextview.c:8874 ../gtk/gtktextview.c:9062
|
||||
msgid "_Paste"
|
||||
msgstr "_Lim inn"
|
||||
|
||||
@@ -2124,7 +2127,7 @@ msgstr "_Slett"
|
||||
msgid "Select _All"
|
||||
msgstr "Velg _alt"
|
||||
|
||||
#: ../gtk/gtkentry.c:10805
|
||||
#: ../gtk/gtkentry.c:10803
|
||||
msgid "Caps Lock is on"
|
||||
msgstr "Caps Lock er på"
|
||||
|
||||
@@ -2234,7 +2237,7 @@ msgstr "Vis kolonne for _størrelse"
|
||||
|
||||
#: ../gtk/gtkfilechooserwidget.c:1709
|
||||
msgid "Sort _Folders before Files"
|
||||
msgstr ""
|
||||
msgstr "Soroter _mapper før filer"
|
||||
|
||||
#. Label
|
||||
#: ../gtk/gtkfilechooserwidget.c:2008
|
||||
@@ -2338,9 +2341,8 @@ msgid "None"
|
||||
msgstr "Ingen"
|
||||
|
||||
#: ../gtk/gtkglarea.c:296
|
||||
#, fuzzy
|
||||
msgid "OpenGL context creation failed"
|
||||
msgstr "Klarte ikke å hente informasjon om skriveren"
|
||||
msgstr "Oppretting av OpenGL-kontekst feilet"
|
||||
|
||||
#: ../gtk/gtkheaderbar.c:414
|
||||
msgid "Application menu"
|
||||
@@ -2721,7 +2723,7 @@ msgstr "Oppgi lokasjon"
|
||||
|
||||
#: ../gtk/gtkplacessidebar.c:1001
|
||||
msgid "Manually enter a location"
|
||||
msgstr ""
|
||||
msgstr "Oppgi lokasjon manuelt"
|
||||
|
||||
#: ../gtk/gtkplacessidebar.c:1012
|
||||
msgid "Trash"
|
||||
@@ -3129,7 +3131,7 @@ msgstr "Skriv ut"
|
||||
#, c-format
|
||||
msgctxt "progress bar label"
|
||||
msgid "%.0f %%"
|
||||
msgstr ""
|
||||
msgstr "%.0f %%"
|
||||
|
||||
#: ../gtk/gtkrecentchooserdefault.c:1077 ../gtk/gtkrecentchooserdefault.c:1114
|
||||
#, c-format
|
||||
@@ -3425,11 +3427,11 @@ msgstr "Fullt volum"
|
||||
#, c-format
|
||||
msgctxt "volume percentage"
|
||||
msgid "%d %%"
|
||||
msgstr ""
|
||||
msgstr "%d %%"
|
||||
|
||||
#: ../gtk/gtkwindow.c:11795
|
||||
msgid "Do you want to use GTK+ Inspector?"
|
||||
msgstr ""
|
||||
msgstr "Vil du bruke GTK+ inspektør?"
|
||||
|
||||
#: ../gtk/gtkwindow.c:11797
|
||||
msgid ""
|
||||
@@ -3440,7 +3442,7 @@ msgstr ""
|
||||
|
||||
#: ../gtk/gtkwindow.c:11802
|
||||
msgid "Don't show this message again"
|
||||
msgstr ""
|
||||
msgstr "Ikke vis denne meldingen igjen"
|
||||
|
||||
#: ../gtk/inspector/action-editor.c:281
|
||||
msgid "Activate"
|
||||
@@ -3488,7 +3490,7 @@ msgstr "Legg til en klasse"
|
||||
|
||||
#: ../gtk/inspector/classes-list.ui.h:2
|
||||
msgid "Restore defaults for this widget"
|
||||
msgstr ""
|
||||
msgstr "Gjenopprett forvalg for denne komponenten"
|
||||
|
||||
#: ../gtk/inspector/css-editor.c:89 ../gtk/inspector/css-editor.c:95
|
||||
msgid "You can type here any CSS rule recognized by GTK+."
|
||||
@@ -3510,7 +3512,7 @@ msgstr ""
|
||||
|
||||
#: ../gtk/inspector/css-editor.c:159
|
||||
msgid "Saving CSS failed"
|
||||
msgstr ""
|
||||
msgstr "Lagring av CSS feilet"
|
||||
|
||||
#: ../gtk/inspector/css-editor.c:199
|
||||
msgid "_Save"
|
||||
@@ -3519,11 +3521,11 @@ msgstr "_Lagre"
|
||||
#. vim: set et sw=2 ts=2:
|
||||
#: ../gtk/inspector/css-editor.ui.h:1
|
||||
msgid "Disable this custom CSS"
|
||||
msgstr ""
|
||||
msgstr "Slå av denne egendefinerte CSSen"
|
||||
|
||||
#: ../gtk/inspector/css-editor.ui.h:2
|
||||
msgid "Save the current CSS"
|
||||
msgstr ""
|
||||
msgstr "Lagre aktiv CSS"
|
||||
|
||||
#: ../gtk/inspector/data-list.ui.h:1
|
||||
msgid "Show data"
|
||||
@@ -3536,31 +3538,31 @@ msgstr "GTK+-versjon"
|
||||
|
||||
#: ../gtk/inspector/general.ui.h:2
|
||||
msgid "GDK Backend"
|
||||
msgstr ""
|
||||
msgstr "GDK-motor"
|
||||
|
||||
#: ../gtk/inspector/general.ui.h:4
|
||||
msgid "GL Version"
|
||||
msgstr ""
|
||||
msgstr "GL-versjon"
|
||||
|
||||
#: ../gtk/inspector/general.ui.h:5
|
||||
msgid "GL Vendor"
|
||||
msgstr ""
|
||||
msgstr "GL-produsent"
|
||||
|
||||
#: ../gtk/inspector/gestures.c:128
|
||||
msgid "Capture"
|
||||
msgstr ""
|
||||
msgstr "Fang"
|
||||
|
||||
#: ../gtk/inspector/gestures.c:129
|
||||
msgid "Bubble"
|
||||
msgstr ""
|
||||
msgstr "Boble"
|
||||
|
||||
#: ../gtk/inspector/gestures.c:130 ../gtk/inspector/menu.ui.h:3
|
||||
msgid "Target"
|
||||
msgstr ""
|
||||
msgstr "Mål"
|
||||
|
||||
#: ../gtk/inspector/menu.c:90
|
||||
msgid "Unnamed section"
|
||||
msgstr ""
|
||||
msgstr "Seksjon uten navn"
|
||||
|
||||
#. vim: set et sw=2 ts=2:
|
||||
#: ../gtk/inspector/menu.ui.h:1 ../gtk/inspector/object-tree.ui.h:3
|
||||
@@ -3577,13 +3579,12 @@ msgstr "Ikon"
|
||||
|
||||
#. vim: set et sw=2 ts=2:
|
||||
#: ../gtk/inspector/misc-info.ui.h:1
|
||||
#, fuzzy
|
||||
msgid "Reference count"
|
||||
msgstr "Brukervalg"
|
||||
msgstr "Referanseteller"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:3
|
||||
msgid "Buildable ID"
|
||||
msgstr ""
|
||||
msgstr "Byggbar ID"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:4
|
||||
msgid "Default Widget"
|
||||
@@ -3598,19 +3599,19 @@ msgstr "Egenskaper"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:6
|
||||
msgid "Focus Widget"
|
||||
msgstr ""
|
||||
msgstr "Fokuskomponent"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:8
|
||||
msgid "Mnemonic Label"
|
||||
msgstr ""
|
||||
msgstr "Hurtitastetikett"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:9
|
||||
msgid "Allocated size"
|
||||
msgstr ""
|
||||
msgstr "Allokert størrelse"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:10
|
||||
msgid "Clip area"
|
||||
msgstr ""
|
||||
msgstr "Klippeområde"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:11
|
||||
msgid "Tick callback"
|
||||
@@ -3618,35 +3619,35 @@ msgstr ""
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:12
|
||||
msgid "Frame count"
|
||||
msgstr ""
|
||||
msgstr "Bildeantall"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:13
|
||||
msgid "Frame rate"
|
||||
msgstr ""
|
||||
msgstr "Rammehastighet"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:14
|
||||
msgid "Accessible role"
|
||||
msgstr ""
|
||||
msgstr "Tilgjengelighetsrolle"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:15
|
||||
msgid "Mapped"
|
||||
msgstr ""
|
||||
msgstr "Tilordnet"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:16
|
||||
msgid "Realized"
|
||||
msgstr ""
|
||||
msgstr "Realisert"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:17
|
||||
msgid "Is Toplevel"
|
||||
msgstr ""
|
||||
msgstr "Er toppobjekt"
|
||||
|
||||
#: ../gtk/inspector/misc-info.ui.h:18
|
||||
msgid "Child Visible"
|
||||
msgstr ""
|
||||
msgstr "Underobjekt synlig"
|
||||
|
||||
#: ../gtk/inspector/object-hierarchy.ui.h:1
|
||||
msgid "Object Hierarchy"
|
||||
msgstr ""
|
||||
msgstr "Objekthierarki"
|
||||
|
||||
#: ../gtk/inspector/object-tree.ui.h:1
|
||||
msgid "Object"
|
||||
@@ -3654,7 +3655,7 @@ msgstr "Objekt"
|
||||
|
||||
#: ../gtk/inspector/object-tree.ui.h:4 ../gtk/inspector/window.ui.h:13
|
||||
msgid "Style Classes"
|
||||
msgstr ""
|
||||
msgstr "Stilklasser"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:617
|
||||
#, c-format
|
||||
@@ -3669,16 +3670,16 @@ msgstr "Ukjent"
|
||||
#: ../gtk/inspector/prop-editor.c:633
|
||||
#, c-format
|
||||
msgid "Object: %p (%s)"
|
||||
msgstr ""
|
||||
msgstr "Objekt: %p (%s)"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:1058
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "Uneditable property type: %s"
|
||||
msgstr "Kan ikke stoppe %s"
|
||||
msgstr "Ikke-redigerbar type for egenskap: %s"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:1176
|
||||
msgid "Attribute mapping"
|
||||
msgstr ""
|
||||
msgstr "Attributt-tilordning"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:1181
|
||||
msgid "Model:"
|
||||
@@ -3696,24 +3697,23 @@ msgstr "Kolonne:"
|
||||
#: ../gtk/inspector/prop-editor.c:1306
|
||||
#, c-format
|
||||
msgid "Defined at: %p (%s)"
|
||||
msgstr ""
|
||||
msgstr "Definert ved: %p (%s)"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:1370 ../gtk/inspector/prop-editor.c:1386
|
||||
#, fuzzy
|
||||
msgid "inverted"
|
||||
msgstr "_Konverter"
|
||||
msgstr "invertert"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:1402
|
||||
msgid "bidirectional, inverted"
|
||||
msgstr ""
|
||||
msgstr "bidireksjonell, invertert"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:1407 ../gtk/inspector/prop-editor.c:1503
|
||||
msgid "bidirectional"
|
||||
msgstr ""
|
||||
msgstr "bidireksjonell"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:1412
|
||||
msgid "Binding:"
|
||||
msgstr ""
|
||||
msgstr "Binding:"
|
||||
|
||||
#: ../gtk/inspector/prop-editor.c:1522
|
||||
msgid "Setting:"
|
||||
@@ -3751,7 +3751,7 @@ msgstr "Attributt"
|
||||
|
||||
#: ../gtk/inspector/prop-list.ui.h:4 ../gtk/inspector/signals-list.ui.h:6
|
||||
msgid "Defined At"
|
||||
msgstr ""
|
||||
msgstr "Definert ved"
|
||||
|
||||
#: ../gtk/inspector/resource-list.ui.h:1
|
||||
msgid "Path"
|
||||
@@ -3779,9 +3779,8 @@ msgid "Size:"
|
||||
msgstr "Størrelse:"
|
||||
|
||||
#: ../gtk/inspector/selector.ui.h:1 ../gtk/inspector/window.ui.h:12
|
||||
#, fuzzy
|
||||
msgid "Selector"
|
||||
msgstr "Velg"
|
||||
msgstr "Velger"
|
||||
|
||||
#: ../gtk/inspector/signals-list.c:109
|
||||
msgid "Yes"
|
||||
@@ -3790,7 +3789,7 @@ msgstr "Ja"
|
||||
#. vim: set et sw=2 ts=2:
|
||||
#: ../gtk/inspector/signals-list.ui.h:1
|
||||
msgid "Trace signal emissions on this object"
|
||||
msgstr ""
|
||||
msgstr "Spor signalutsendelser på dette objektet"
|
||||
|
||||
#: ../gtk/inspector/signals-list.ui.h:2
|
||||
msgid "Clear log"
|
||||
@@ -3802,11 +3801,11 @@ msgstr "Koblet til"
|
||||
|
||||
#: ../gtk/inspector/size-groups.c:223
|
||||
msgid "Ignore hidden"
|
||||
msgstr ""
|
||||
msgstr "Ignorer skjult"
|
||||
|
||||
#: ../gtk/inspector/size-groups.c:241
|
||||
msgid "Mode"
|
||||
msgstr ""
|
||||
msgstr "Modus"
|
||||
|
||||
#: ../gtk/inspector/size-groups.c:252
|
||||
msgid "Horizontal"
|
||||
@@ -3827,27 +3826,27 @@ msgstr "Type"
|
||||
|
||||
#: ../gtk/inspector/statistics.ui.h:2
|
||||
msgid "Self 1"
|
||||
msgstr ""
|
||||
msgstr "Selv 1"
|
||||
|
||||
#: ../gtk/inspector/statistics.ui.h:3
|
||||
msgid "Cumulative 1"
|
||||
msgstr ""
|
||||
msgstr "Kumulativ 1"
|
||||
|
||||
#: ../gtk/inspector/statistics.ui.h:4
|
||||
msgid "Self 2"
|
||||
msgstr ""
|
||||
msgstr "Selv 2"
|
||||
|
||||
#: ../gtk/inspector/statistics.ui.h:5
|
||||
msgid "Cumulative 2"
|
||||
msgstr ""
|
||||
msgstr "Kumulativ 2"
|
||||
|
||||
#: ../gtk/inspector/statistics.ui.h:6
|
||||
msgid "Self"
|
||||
msgstr ""
|
||||
msgstr "Selv"
|
||||
|
||||
#: ../gtk/inspector/statistics.ui.h:7
|
||||
msgid "Cumulative"
|
||||
msgstr ""
|
||||
msgstr "Kumulativ"
|
||||
|
||||
#: ../gtk/inspector/statistics.ui.h:8
|
||||
msgid "Enable statistics with GOBJECT_DEBUG=instance-count"
|
||||
@@ -3913,16 +3912,15 @@ msgstr "Høyre til venstre"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:8
|
||||
msgid "Window scaling"
|
||||
msgstr ""
|
||||
msgstr "Vinduskalering"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:9
|
||||
msgid "Animations"
|
||||
msgstr "Animasjoner"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Rendering Mode"
|
||||
msgstr "Genererer data"
|
||||
msgstr "Gjengivelsesmodus"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:11
|
||||
msgid "Similar"
|
||||
@@ -3938,27 +3936,27 @@ msgstr "Opptak"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:14
|
||||
msgid "Show Graphic Updates"
|
||||
msgstr ""
|
||||
msgstr "Vis grafiske oppdateringer"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:15
|
||||
msgid "Show Baselines"
|
||||
msgstr ""
|
||||
msgstr "Vis utgangspunkter"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:16
|
||||
msgid "Show Pixel Cache"
|
||||
msgstr ""
|
||||
msgstr "Vis pikselbuffer"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:17
|
||||
msgid "Simulate touchscreen"
|
||||
msgstr ""
|
||||
msgstr "Simuler berøringsskjerm"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:18
|
||||
msgid "GL Rendering"
|
||||
msgstr ""
|
||||
msgstr "GL-gjengivelse"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:19
|
||||
msgid "When needed"
|
||||
msgstr ""
|
||||
msgstr "Når nødvendig"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:20
|
||||
msgid "Always"
|
||||
@@ -3970,15 +3968,15 @@ msgstr "Slått av"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:22
|
||||
msgid "Software GL"
|
||||
msgstr ""
|
||||
msgstr "Programvare-GL"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:23
|
||||
msgid "Software Surfaces"
|
||||
msgstr ""
|
||||
msgstr "Programvareoverflater"
|
||||
|
||||
#: ../gtk/inspector/visual.ui.h:24
|
||||
msgid "Texture Rectangle Extension"
|
||||
msgstr ""
|
||||
msgstr "Utvidelse for teksturrektangel"
|
||||
|
||||
#. vim: set et sw=2 ts=2:
|
||||
#: ../gtk/inspector/window.ui.h:1
|
||||
@@ -4013,18 +4011,16 @@ msgid "Signals"
|
||||
msgstr "Signaler"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:10
|
||||
#, fuzzy
|
||||
msgid "Child Properties"
|
||||
msgstr "E_genskaper"
|
||||
msgstr "Egenskaper for underobjekt"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:11
|
||||
msgid "Hierarchy"
|
||||
msgstr "Hierarki"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:14
|
||||
#, fuzzy
|
||||
msgid "Style Properties"
|
||||
msgstr "E_genskaper"
|
||||
msgstr "Egenskaper for stil"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:15 ../gtk/inspector/window.ui.h:24
|
||||
msgid "CSS"
|
||||
@@ -4032,7 +4028,7 @@ msgstr "CSS"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:16
|
||||
msgid "Size Groups"
|
||||
msgstr ""
|
||||
msgstr "Størrelsesgrupper"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:17
|
||||
msgid "Data"
|
||||
@@ -4044,7 +4040,7 @@ msgstr "Handlinger"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:20
|
||||
msgid "Gestures"
|
||||
msgstr ""
|
||||
msgstr "Gester"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:21
|
||||
msgid "Objects"
|
||||
@@ -4060,7 +4056,7 @@ msgstr "Ressurser"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:25
|
||||
msgid "Visual"
|
||||
msgstr ""
|
||||
msgstr "Synlig"
|
||||
|
||||
#: ../gtk/inspector/window.ui.h:26
|
||||
#: ../gtk/resources/ui/gtkprintunixdialog.ui.h:24
|
||||
@@ -4075,7 +4071,7 @@ msgstr "asme_f"
|
||||
#: ../gtk/paper_names_offsets.c:5
|
||||
msgctxt "paper size"
|
||||
msgid "A0×2"
|
||||
msgstr ""
|
||||
msgstr "A0×2"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:6
|
||||
msgctxt "paper size"
|
||||
@@ -4085,7 +4081,7 @@ msgstr "A0"
|
||||
#: ../gtk/paper_names_offsets.c:7
|
||||
msgctxt "paper size"
|
||||
msgid "A0×3"
|
||||
msgstr ""
|
||||
msgstr "A0×3"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:8
|
||||
msgctxt "paper size"
|
||||
@@ -4100,12 +4096,12 @@ msgstr "A10"
|
||||
#: ../gtk/paper_names_offsets.c:10
|
||||
msgctxt "paper size"
|
||||
msgid "A1×3"
|
||||
msgstr ""
|
||||
msgstr "A1×3"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:11
|
||||
msgctxt "paper size"
|
||||
msgid "A1×4"
|
||||
msgstr ""
|
||||
msgstr "A1×4"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:12
|
||||
msgctxt "paper size"
|
||||
@@ -4115,17 +4111,17 @@ msgstr "A2"
|
||||
#: ../gtk/paper_names_offsets.c:13
|
||||
msgctxt "paper size"
|
||||
msgid "A2×3"
|
||||
msgstr ""
|
||||
msgstr "A2×3"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:14
|
||||
msgctxt "paper size"
|
||||
msgid "A2×4"
|
||||
msgstr ""
|
||||
msgstr "A2×4"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:15
|
||||
msgctxt "paper size"
|
||||
msgid "A2×5"
|
||||
msgstr ""
|
||||
msgstr "A2×5"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:16
|
||||
msgctxt "paper size"
|
||||
@@ -4140,27 +4136,27 @@ msgstr "A3 ekstra"
|
||||
#: ../gtk/paper_names_offsets.c:18
|
||||
msgctxt "paper size"
|
||||
msgid "A3×3"
|
||||
msgstr ""
|
||||
msgstr "A3×3"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:19
|
||||
msgctxt "paper size"
|
||||
msgid "A3×4"
|
||||
msgstr ""
|
||||
msgstr "A3×4"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:20
|
||||
msgctxt "paper size"
|
||||
msgid "A3×5"
|
||||
msgstr ""
|
||||
msgstr "A3×5"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:21
|
||||
msgctxt "paper size"
|
||||
msgid "A3×6"
|
||||
msgstr ""
|
||||
msgstr "A3×6"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:22
|
||||
msgctxt "paper size"
|
||||
msgid "A3×7"
|
||||
msgstr ""
|
||||
msgstr "A3×7"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:23
|
||||
msgctxt "paper size"
|
||||
@@ -4180,37 +4176,37 @@ msgstr "A4 tab"
|
||||
#: ../gtk/paper_names_offsets.c:26
|
||||
msgctxt "paper size"
|
||||
msgid "A4×3"
|
||||
msgstr ""
|
||||
msgstr "A4×3"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:27
|
||||
msgctxt "paper size"
|
||||
msgid "A4×4"
|
||||
msgstr ""
|
||||
msgstr "A4×4"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:28
|
||||
msgctxt "paper size"
|
||||
msgid "A4×5"
|
||||
msgstr ""
|
||||
msgstr "A4×5"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:29
|
||||
msgctxt "paper size"
|
||||
msgid "A4×6"
|
||||
msgstr ""
|
||||
msgstr "A4×6"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:30
|
||||
msgctxt "paper size"
|
||||
msgid "A4×7"
|
||||
msgstr ""
|
||||
msgstr "A4×7"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:31
|
||||
msgctxt "paper size"
|
||||
msgid "A4×8"
|
||||
msgstr ""
|
||||
msgstr "A4×8"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:32
|
||||
msgctxt "paper size"
|
||||
msgid "A4×9"
|
||||
msgstr ""
|
||||
msgstr "A4×9"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:33
|
||||
msgctxt "paper size"
|
||||
@@ -4815,7 +4811,7 @@ msgstr "#9 konvolutt"
|
||||
#: ../gtk/paper_names_offsets.c:153
|
||||
msgctxt "paper size"
|
||||
msgid "Oficio"
|
||||
msgstr ""
|
||||
msgstr "Oficio"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:154
|
||||
msgctxt "paper size"
|
||||
@@ -4845,7 +4841,7 @@ msgstr "Bredt format"
|
||||
#: ../gtk/paper_names_offsets.c:159
|
||||
msgctxt "paper size"
|
||||
msgid "Photo L"
|
||||
msgstr ""
|
||||
msgstr "Photo L"
|
||||
|
||||
#: ../gtk/paper_names_offsets.c:160
|
||||
msgctxt "paper size"
|
||||
|
Reference in New Issue
Block a user