diff options
-rw-r--r-- | gdk/macos/GdkMacosWindow.c | 8 | ||||
-rw-r--r-- | gdk/macos/gdkmacosdisplay-translate.c | 43 | ||||
-rw-r--r-- | gdk/macos/gdkmacostoplevelsurface.c | 3 | ||||
-rw-r--r-- | gtk/gtkscrolledwindow.c | 29 | ||||
-rw-r--r-- | po/zh_CN.po | 87 |
5 files changed, 108 insertions, 62 deletions
diff --git a/gdk/macos/GdkMacosWindow.c b/gdk/macos/GdkMacosWindow.c index f879decbc9..3ed60cb049 100644 --- a/gdk/macos/GdkMacosWindow.c +++ b/gdk/macos/GdkMacosWindow.c @@ -668,7 +668,12 @@ typedef NSString *CALayerContentsGravity; is_opaque = (([self styleMask] & NSWindowStyleMaskTitled) != 0); if (was_fullscreen != is_fullscreen) - _gdk_macos_surface_update_fullscreen_state (gdk_surface); + { + if (was_fullscreen) + [self setFrame:lastUnfullscreenFrame display:NO]; + + _gdk_macos_surface_update_fullscreen_state (gdk_surface); + } if (was_opaque != is_opaque) { @@ -753,7 +758,6 @@ typedef NSString *CALayerContentsGravity; -(void)windowWillExitFullScreen:(NSNotification *)aNotification { - [self setFrame:lastUnfullscreenFrame display:NO]; } -(void)windowDidExitFullScreen:(NSNotification *)aNotification diff --git a/gdk/macos/gdkmacosdisplay-translate.c b/gdk/macos/gdkmacosdisplay-translate.c index 8e3cd90b82..646ba0cd9e 100644 --- a/gdk/macos/gdkmacosdisplay-translate.c +++ b/gdk/macos/gdkmacosdisplay-translate.c @@ -612,6 +612,8 @@ fill_scroll_event (GdkMacosDisplay *self, GdkModifierType state; GdkDevice *pointer; GdkEvent *ret = NULL; + NSEventPhase phase; + NSEventPhase momentumPhase; GdkSeat *seat; double dx; double dy; @@ -619,6 +621,15 @@ fill_scroll_event (GdkMacosDisplay *self, g_assert (GDK_IS_MACOS_SURFACE (surface)); g_assert (nsevent != NULL); + phase = [nsevent phase]; + momentumPhase = [nsevent momentumPhase]; + + /* Ignore kinetic scroll events from the display server as we already + * handle those internally. + */ + if (phase == 0 && momentumPhase != 0) + return NULL; + seat = gdk_display_get_default_seat (GDK_DISPLAY (self)); pointer = gdk_seat_get_pointer (seat); state = _gdk_macos_display_get_current_mouse_modifiers (self) | @@ -684,19 +695,31 @@ fill_scroll_event (GdkMacosDisplay *self, } else { - g_assert (ret == NULL); - - ret = gdk_scroll_event_new (GDK_SURFACE (surface), - pointer, - NULL, - get_time_from_ns_event (nsevent), - state, - -dx * 32, - -dy * 32, - FALSE); + ret = gdk_scroll_event_new_discrete (GDK_SURFACE (surface), + pointer, + NULL, + get_time_from_ns_event (nsevent), + state, + direction, + FALSE); } } + if (phase == NSEventPhaseEnded || phase == NSEventPhaseCancelled) + { + /* The user must have released their fingers in a touchpad + * scroll, so try to send a scroll is_stop event. + */ + if (ret != NULL) + _gdk_event_queue_append (GDK_DISPLAY (self), g_steal_pointer (&ret)); + ret = gdk_scroll_event_new (GDK_SURFACE (surface), + pointer, + NULL, + get_time_from_ns_event (nsevent), + state, + 0.0, 0.0, TRUE); + } + return g_steal_pointer (&ret); } diff --git a/gdk/macos/gdkmacostoplevelsurface.c b/gdk/macos/gdkmacostoplevelsurface.c index 27289787ca..c84ebb704b 100644 --- a/gdk/macos/gdkmacostoplevelsurface.c +++ b/gdk/macos/gdkmacostoplevelsurface.c @@ -421,7 +421,8 @@ _gdk_macos_toplevel_surface_compute_size (GdkSurface *surface) GDK_TOPLEVEL_STATE_RIGHT_TILED | GDK_TOPLEVEL_STATE_BOTTOM_TILED | GDK_TOPLEVEL_STATE_LEFT_TILED | - GDK_TOPLEVEL_STATE_MINIMIZED)) + GDK_TOPLEVEL_STATE_MINIMIZED) || + [macos_surface->window inLiveResize]) return FALSE; /* If we delayed a user resize until the beginning of the frame, diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index 49be97080c..1842dcd528 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -1225,16 +1225,15 @@ check_update_scrollbar_proximity (GtkScrolledWindow *sw, } static double -get_scroll_unit (GtkScrolledWindow *sw, - GtkOrientation orientation) +get_scroll_unit (GtkScrolledWindow *sw, + GtkOrientation orientation, + GtkEventControllerScroll *scroll) { - double scroll_unit; - -#ifndef GDK_WINDOWING_MACOS GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (sw); GtkScrollbar *scrollbar; GtkAdjustment *adj; double page_size; + double scroll_unit; if (orientation == GTK_ORIENTATION_HORIZONTAL) scrollbar = GTK_SCROLLBAR (priv->hscrollbar); @@ -1247,8 +1246,16 @@ get_scroll_unit (GtkScrolledWindow *sw, adj = gtk_scrollbar_get_adjustment (scrollbar); page_size = gtk_adjustment_get_page_size (adj); scroll_unit = pow (page_size, 2.0 / 3.0); -#else - scroll_unit = 1; + +#ifdef GDK_WINDOWING_MACOS + { + GdkEvent *event = gtk_event_controller_get_current_event (GTK_EVENT_CONTROLLER (scroll)); + + if (event != NULL && + gdk_event_get_event_type (event) == GDK_SCROLL && + gdk_scroll_event_get_direction (event) == GDK_SCROLL_SMOOTH) + scroll_unit = 1; + } #endif return scroll_unit; @@ -1396,7 +1403,7 @@ scrolled_window_scroll (GtkScrolledWindow *scrolled_window, double scroll_unit; adj = gtk_scrollbar_get_adjustment (GTK_SCROLLBAR (priv->hscrollbar)); - scroll_unit = get_scroll_unit (scrolled_window, GTK_ORIENTATION_HORIZONTAL); + scroll_unit = get_scroll_unit (scrolled_window, GTK_ORIENTATION_HORIZONTAL, scroll); new_value = priv->unclamped_hadj_value + delta_x * scroll_unit; _gtk_scrolled_window_set_adjustment_value (scrolled_window, adj, @@ -1411,7 +1418,7 @@ scrolled_window_scroll (GtkScrolledWindow *scrolled_window, double scroll_unit; adj = gtk_scrollbar_get_adjustment (GTK_SCROLLBAR (priv->vscrollbar)); - scroll_unit = get_scroll_unit (scrolled_window, GTK_ORIENTATION_VERTICAL); + scroll_unit = get_scroll_unit (scrolled_window, GTK_ORIENTATION_VERTICAL, scroll); new_value = priv->unclamped_vadj_value + delta_y * scroll_unit; _gtk_scrolled_window_set_adjustment_value (scrolled_window, adj, @@ -1469,8 +1476,8 @@ scroll_controller_decelerate (GtkEventControllerScroll *scroll, shifted = (state & GDK_SHIFT_MASK) != 0; - unit_x = get_scroll_unit (scrolled_window, GTK_ORIENTATION_HORIZONTAL); - unit_y = get_scroll_unit (scrolled_window, GTK_ORIENTATION_VERTICAL); + unit_x = get_scroll_unit (scrolled_window, GTK_ORIENTATION_HORIZONTAL, scroll); + unit_y = get_scroll_unit (scrolled_window, GTK_ORIENTATION_VERTICAL, scroll); if (shifted) { diff --git a/po/zh_CN.po b/po/zh_CN.po index c14a7f3943..5532086bab 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -24,21 +24,22 @@ # Zamir SUN <sztsian@gmail.com>, 2016. # Mingcong Bai <jeffbai@aosc.xyz>, 2015, 2016, 2017, 2018. # Dingzhong Chen <wsxy162@gmail.com>, 2018-2021. +# lumingzh <lumingzh@qq.com>, 2022. # msgid "" msgstr "" "Project-Id-Version: gtk master\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gtk/-/issues/\n" -"POT-Creation-Date: 2022-01-30 15:27+0000\n" -"PO-Revision-Date: 2022-01-30 22:45-0500\n" -"Last-Translator: Boyuan Yang <073plan@gmail.com>\n" +"POT-Creation-Date: 2022-02-23 03:11+0000\n" +"PO-Revision-Date: 2022-02-24 18:47+0800\n" +"Last-Translator: lumingzh <lumingzh@qq.com>\n" "Language-Team: Chinese - China <i18n-zh@googlegroups.com>\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.4.3\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Generator: Gtranslator 41.0\n" #: gdk/broadway/gdkbroadway-server.c:135 #, c-format @@ -68,7 +69,7 @@ msgstr "无法以“%s”提供内容" msgid "Cannot provide contents as %s" msgstr "无法以 %s 提供内容" -#: gdk/gdkdisplay.c:154 gdk/gdkglcontext.c:434 +#: gdk/gdkdisplay.c:154 gdk/gdkglcontext.c:430 msgid "The current backend does not support OpenGL" msgstr "当前后端不支持 OpenGL" @@ -126,27 +127,27 @@ msgstr "不支持从其他应用拖放。" msgid "No compatible formats to transfer contents." msgstr "无兼容格式可用于传输内容。" -#: gdk/gdkglcontext.c:336 +#: gdk/gdkglcontext.c:332 msgid "The EGL implementation does not support any allowed APIs" msgstr "EGL 实现不支持任何允许的 API" -#: gdk/gdkglcontext.c:417 gdk/win32/gdkglcontext-win32-wgl.c:616 +#: gdk/gdkglcontext.c:413 gdk/win32/gdkglcontext-win32-wgl.c:616 #: gdk/x11/gdkglcontext-glx.c:624 msgid "Unable to create a GL context" msgstr "无法创建 GL 上下文" -#: gdk/gdkglcontext.c:1270 +#: gdk/gdkglcontext.c:1273 msgid "Anything but OpenGL ES disabled via GDK_DEBUG" msgstr "已通过 GDK_DEBUG 停用 OpenGL ES 以外的所有实现" -#: gdk/gdkglcontext.c:1279 +#: gdk/gdkglcontext.c:1282 #, c-format msgid "Application does not support %s API" msgstr "应用程序不支持 %s API" #. translators: This is about OpenGL backend names, like #. * "Trying to use X11 GLX, but EGL is already in use" -#: gdk/gdkglcontext.c:1800 +#: gdk/gdkglcontext.c:1803 #, c-format msgid "Trying to use %s, but %s is already in use" msgstr "尝试使用 %s,但 %s 已在使用" @@ -536,17 +537,17 @@ msgctxt "keyboard label" msgid "Suspend" msgstr "挂起" -#: gdk/loaders/gdkjpeg.c:61 +#: gdk/loaders/gdkjpeg.c:63 #, c-format msgid "Error interpreting JPEG image file (%s)" msgstr "解释 JPEG 图像文件时出错(%s)" -#: gdk/loaders/gdkjpeg.c:188 +#: gdk/loaders/gdkjpeg.c:190 #, c-format msgid "Unsupported JPEG colorspace (%d)" msgstr "不支持的 JPEG 颜色空间(%d)" -#: gdk/loaders/gdkjpeg.c:197 gdk/loaders/gdkpng.c:265 gdk/loaders/gdktiff.c:453 +#: gdk/loaders/gdkjpeg.c:199 gdk/loaders/gdkpng.c:265 gdk/loaders/gdktiff.c:453 #, c-format msgid "Not enough memory for image size %ux%u" msgstr "内存不足以处理尺寸为 %ux%u 的图像" @@ -580,7 +581,7 @@ msgid "Reading data failed at row %d" msgstr "读取第 %d 行数据失败" #: gdk/macos/gdkmacosclipboard.c:557 gdk/wayland/gdkclipboard-wayland.c:231 -#: gdk/wayland/gdkdrop-wayland.c:203 gdk/wayland/gdkprimary-wayland.c:312 +#: gdk/wayland/gdkdrop-wayland.c:203 gdk/wayland/gdkprimary-wayland.c:313 #: gdk/win32/gdkdrop-win32.c:1006 gdk/win32/gdkdrop-win32.c:1051 #: gdk/x11/gdkclipboard-x11.c:787 gdk/x11/gdkdrop-x11.c:233 msgid "No compatible transfer format found" @@ -2099,7 +2100,7 @@ msgstr "同名文件已存在" #: gtk/gtkmountoperation.c:610 gtk/gtkpagesetupunixdialog.c:283 #: gtk/gtkprintbackend.c:642 gtk/gtkprinteroptionwidget.c:713 #: gtk/gtkprintunixdialog.c:667 gtk/gtkprintunixdialog.c:823 -#: gtk/gtkwindow.c:6226 gtk/inspector/css-editor.c:248 +#: gtk/gtkwindow.c:6147 gtk/inspector/css-editor.c:248 #: gtk/inspector/recorder.c:1706 msgid "_Cancel" msgstr "取消(_C)" @@ -2581,7 +2582,7 @@ msgid "%d:%02d" msgstr "%d:%02d" #: gtk/gtkmessagedialog.c:158 gtk/gtkmessagedialog.c:176 -#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6227 +#: gtk/gtkprintbackend.c:643 gtk/gtkwindow.c:6148 msgid "_OK" msgstr "确定(_O)" @@ -3477,12 +3478,12 @@ msgid "%d %%" msgstr "%d %%" # Chrome 那个叫检查元素,这个叫检查器也没什么问题吧。 -#: gtk/gtkwindow.c:6214 +#: gtk/gtkwindow.c:6135 #, c-format msgid "Do you want to use GTK Inspector?" msgstr "您是否要使用 GTK 检查器?" -#: gtk/gtkwindow.c:6216 +#: gtk/gtkwindow.c:6137 #, c-format msgid "" "GTK Inspector is an interactive debugger that lets you explore and modify " @@ -3492,7 +3493,7 @@ msgstr "" "GTK 检查器是一个交互式的调试器,让您可以探索并修改任何 GTK 应用程序的内部构" "造。使用它可能造成应用程序损坏或崩溃。" -#: gtk/gtkwindow.c:6221 +#: gtk/gtkwindow.c:6142 msgid "Don’t show this message again" msgstr "不要再显示此消息" @@ -3663,47 +3664,47 @@ msgstr "样式类别" msgid "CSS Property" msgstr "CSS 属性" -#: gtk/inspector/general.c:309 gtk/inspector/general.c:389 +#: gtk/inspector/general.c:330 gtk/inspector/general.c:410 msgctxt "GL version" msgid "None" msgstr "无" -#: gtk/inspector/general.c:318 +#: gtk/inspector/general.c:339 msgctxt "GL version" msgid "Disabled" msgstr "已禁用" -#: gtk/inspector/general.c:319 +#: gtk/inspector/general.c:340 msgctxt "GL vendor" msgid "Disabled" msgstr "已禁用" -#: gtk/inspector/general.c:390 +#: gtk/inspector/general.c:411 msgctxt "GL vendor" msgid "None" msgstr "无" -#: gtk/inspector/general.c:441 +#: gtk/inspector/general.c:462 msgctxt "Vulkan device" msgid "Disabled" msgstr "已禁用" -#: gtk/inspector/general.c:442 gtk/inspector/general.c:443 +#: gtk/inspector/general.c:463 gtk/inspector/general.c:464 msgctxt "Vulkan version" msgid "Disabled" msgstr "已禁用" -#: gtk/inspector/general.c:499 +#: gtk/inspector/general.c:520 msgctxt "Vulkan device" msgid "None" msgstr "无" -#: gtk/inspector/general.c:500 gtk/inspector/general.c:501 +#: gtk/inspector/general.c:521 gtk/inspector/general.c:522 msgctxt "Vulkan version" msgid "None" msgstr "无" -#: gtk/inspector/general.c:771 +#: gtk/inspector/general.c:792 msgid "IM Context is hardcoded by GTK_IM_MODULE" msgstr "输入法上下文由 GTK_IM_MODULE 硬编码" @@ -3731,39 +3732,49 @@ msgstr "媒体后端" msgid "Input Method" msgstr "输入法" -#: gtk/inspector/general.ui:201 +#: gtk/inspector/general.ui:202 +#| msgid "Application" +msgid "Application ID" +msgstr "应用程序 ID" + +#: gtk/inspector/general.ui:228 +#| msgid "Resources" +msgid "Resource Path" +msgstr "资源路径" + +#: gtk/inspector/general.ui:268 msgid "Prefix" msgstr "前缀" -#: gtk/inspector/general.ui:403 +#: gtk/inspector/general.ui:470 msgid "Display" msgstr "显示" -#: gtk/inspector/general.ui:430 +#: gtk/inspector/general.ui:497 msgid "RGBA Visual" msgstr "RGBA 视觉" -#: gtk/inspector/general.ui:456 +#: gtk/inspector/general.ui:523 msgid "Composited" msgstr "混成" -#: gtk/inspector/general.ui:508 +#: gtk/inspector/general.ui:575 msgid "GL Version" msgstr "GL 版本" -#: gtk/inspector/general.ui:558 +#: gtk/inspector/general.ui:625 msgid "GL Vendor" msgstr "GL 厂商" -#: gtk/inspector/general.ui:598 +#: gtk/inspector/general.ui:665 msgid "Vulkan Device" msgstr "Vulkan 设备" -#: gtk/inspector/general.ui:625 +#: gtk/inspector/general.ui:692 msgid "Vulkan API version" msgstr "Vulkan API 版本" -#: gtk/inspector/general.ui:652 +#: gtk/inspector/general.ui:719 msgid "Vulkan driver version" msgstr "Vulkan 驱动版本" |