LINUX.ORG.RU
ФорумTalks

Мыши плакали, кололись...

 ,


0

1

Ударные дозы упорина в действии: http://s42.radikal.ru/i095/1302/38/39400e0d8d6f.png

Задача: сделать так, чтобы при наведении мыши на миниатюру окна, в углу миниатюры появлялась кнопка «Закрыть». На скриншоте для наглядности кнопки «Закрыть» показаны все сразу.

Поясняю, что тут у нас происходит: label собственного окна не имеет, т.е. рисуется в родительском окне (в окне всплывающей панели). Крестик «Закрыть» лежит на отдельном event box-е, т.е. в дочернем окне. Здравый смысл нам подсказывает, что содержимое дочернего окна должно выводиться строго поверх родительского. А вот нихрена.

Что мы видим? Мы видим очевидное-невероятное: сначала рисуется фон родительского окна, затем рисуется содержимое дочернего even box-а, а затем, внезапно, тулкит вспоминает, что надо нарисовать label и фигачит его поверх event box-а. Текст поверх крестика.

А всё почему? Потому что гордое Gtk с некоторых пор не пользуется иксовыми вложенными окнами, а реализует собственный механизм окон. Который косой и кривой как траектория моего соседа, когда он бегает за водкой до ларька. Ну расскажите мне про ненужность иерархических окон в иксах, ага. Gtk вон не осилил тупо производить отрисовку обходом дерева, дерево - это же слишком сложно для современных программистов.

До кучи, там еще и обработка событий работает как бог на душу положит. Например, всплывающая подсказка на крестик может всплыть, а может и не всплыть. 50% на 50%.

Что я делаю не так? — Да пользуюсь этим недоразумением вместо нормального тулкита, ССЗБ. Тут даже нормального контейнера-оверлея нет. Теперь мне понятно, почему GtkOverlay появился только в gtk3 — с такими-то багами.

Кстати, waker, ты не знаешь, для gtk2 есть какой-нибудь готовый аналог GtkOverlay? Ну может в каком-нибудь проекте кто-то делал такой виджет чисто для себя...

гордое Gtk с некоторых пор не пользуется иксовыми вложенными окнами

Потому что это ССЗБ.

Deleted
()
Ответ на: комментарий от geekless

который не работает

А это уже другой вопрос совершенно :]

Deleted
()
Ответ на: комментарий от tailgunner

Нормальный - это какой?

А хрен его знает. Кутями вот я не пользовался, значит для меня они по умолчанию нормальные - по граблям еще не ходил. Интересно было бы от E17 тулкит пощупать, но он никому не нужен по причине отсуттвия интеграции внешнего вида с гтк.

geekless ★★
() автор топика
Ответ на: комментарий от another

Эта всплывающая хрень безумно бесит в венде. Не делай такое. :)

Без паники. :} У меня всё ненужное отдельно в настройках включается.

geekless ★★
() автор топика

Кстати, waker, ты не знаешь, для gtk2 есть какой-нибудь готовый аналог GtkOverlay?

я даже не знаю что такое GtkOverlay :) не пользовался.

waker ★★★★★
()

Ты до сих пор придерживаешься принципа «Багрепорты слать не буду, на Qt переходить не буду»?

krakatau
()
Ответ на: комментарий от krakatau

Багрепорты слать не буду

Машиной времени в прошлое? Новых версий gtk2 не будет.

на Qt переходить не буд

Ты осознаешь, что это эквивалентно выкидыванию всего кода проекта и старту с нуля?

geekless ★★
() автор топика
Ответ на: комментарий от onetwothreezeronine

Пока еще не вижу смысла переходить. Надо выделить хотя бы неделю чисто на то, чтобы перенести код на gtk3, мне лень. К тому же, они задолбали ломать темы оформления при каждом апдейте третьей версии.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Ты осознаешь, что это эквивалентно выкидыванию всего кода проекта и старту с нуля?

Вот тоже мне трагедия. Панелей и так как грязи.

thesis ★★★★★
()

По видимому, они траву перед употреблением в растворителе вымачивают.
Кстати, я же тебе обещал апплетов запилить. Начну с мониторинга сетевых интерфейсов. Какую информацию надо собирать (чтоб не слишком мало, но и не избыточно)?

netcat ★★
()
Ответ на: комментарий от AX

Как грязи, а пользоваться невозможно ни одним. :}

geekless ★★
() автор топика
Ответ на: комментарий от thesis

Лучше двухпанельник запили.

Не осилю в одиночку. Чуваку, который spacefm пилит, помогать разве что. Других перспективных девелоперов двухпанельников не вижу.

geekless ★★
() автор топика

Ну расскажите мне про ненужность иерархических окон в иксах, ага

Не нужно.

PolarFox ★★★★★
()
Ответ на: комментарий от geekless

От апплета CPU-графика отделить код отрисовки. Сделать несколько апплетов, использующих этот код отрисовки, но засовывающих в него разные данные: CPU, сеть, память и т.п. И также апплет, который позволяет в настройках указать команду, которая будет поставлять данные.

Возможно, я что-то не так понял.

netcat ★★
()
Ответ на: комментарий от netcat

А, да, точно. Ну традиционно скорость приёма-передачи мониторят, типа как в icewm график активности сети. А вроде для сетевых интерфейсов больше и нечего мониторить, кроме скорости.

geekless ★★
() автор топика
Ответ на: комментарий от AX

Вот если netcat запилит, то будет. А если не запилит, то не будет, у меня сейчас времени мало.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Новых версий gtk2 не будет.

ftp://ftp.acc.umu.se/pub/GNOME/sources/gtk /2.24/

Последняя версия (2.24.15) от 10 февраля сего года. Больше точно не будет?

И на какую версию намекает фраза «с некоторых пор» в теме? Я было подумал, что речь о 3.0 или выше.

pv4 ★★
()

Форкни GTK3 и поддерживай, это будет полезней панельки. Оригинальный GTK как раз один человек пилит.

sh4r4t4n
()
Ответ на: комментарий от pv4

Последняя версия (2.24.15) от 10 февраля сего года.

Изменение последней цифры - мелкие фиксы. Тут переделки довольно существенными могут оказаться, никто ими заниматься не будет. (У них на третью-то версию времени не хватает.) Ну разве что я сам патч напишу. А я не напишу, у меня тоже времени нет, мне за это никто не заплатит.

geekless ★★
() автор топика
Ответ на: комментарий от pv4

И на какую версию намекает фраза «с некоторых пор» в теме? Я было подумал, что речь о 3.0 или выше.

В 2.x-какой-то это изменение было внесено, не помню точно номер версии.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Слушай, а ты не думал о переходе на CMake?
//Вопрос бубунтоида, у которого стоит automake-1.11, требуется automake-1.13, обратной совместимости нет. Из исходников придется ставить, че.

netcat ★★
()
Ответ на: комментарий от netcat

//Вопрос бубунтоида, у которого стоит automake-1.11, требуется automake-1.13, обратной совместимости нет. Из исходников придется ставить, че.

Нипонял. Мой код не взлетает на 1.11? Согласно проверкам в autogen.sh - должен. Я вроде вообще не правил код сборки под разные версии - оно обычно сыплет ворнингами, но пашет.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

Ты осознаешь, что это эквивалентно выкидыванию всего кода проекта и старту с нуля?

слоупок что ли? не следишь за модой? ща все так делают! и еще нужно переписывать на жабаскрипты. тогда все девки будут в восторге от тебя!

der_looser ★★
()
Ответ на: комментарий от der_looser

и еще нужно переписывать на жабаскрипты

Бгг. Мне периодически приходит в голову, что это едиственный способ получить нормальный ФМ, например. http://tushkan.com/demo/fmlight/

geekless ★★
() автор топика
Ответ на: комментарий от geekless

В интернете об этом много написано, но лично я заметил, что макроязык cmake намного проще и удобнее, меньше писанины, да и секса с CMake меньше, плюс обратная совместимость лучше. А еще coloured input.

netcat ★★
()
Ответ на: комментарий от netcat

Эээ... хз. Честно говоря, я без понятия, что это. Кажется, система сборки видит, что *.am файлы новее *.in файлов, пытается сделать automake и фейлится. Может с датами проблема.

geekless ★★
() автор топика
Ответ на: комментарий от geekless

В таком случае конвертация с помощью git svn clone

netcat ★★
()
Ответ на: комментарий от netcat

В интернете об этом много написано, но лично я заметил, что макроязык cmake намного проще и удобнее, меньше писанины, да и секса с CMake меньше, плюс обратная совместимость лучше. А еще coloured input.

Это всё очень абстрактно на самом деле. Вот конкретный проект, если для него есть какие-то существенные плюсы, то переезд имеет смысл. Если нет — то не имеет.

Ну или как вариант, ты сам можешь перенести его на cmake и прислать патч.

geekless ★★
() автор топика
Ответ на: комментарий от netcat

Собственно, в чем преимущество автотулзов - в том, что их наличие требуется только на машине разработчика, а для запуска ./configure && make при сборке пакета они не нужны.

Но как показывает этот фейл, что-то тут бывает не так, надо разобраться.

geekless ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.